diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch new file mode 100644 index 00000000..4531752f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From fc9002e18099fd51f0f120cebc4078db2a221e26 Mon Sep 17 00:00:00 2001 | ||
2 | From: Cliff Wickman <cpw@sgi.com> | ||
3 | Date: Wed, 18 Jan 2012 09:40:47 -0600 | ||
4 | Subject: [PATCH 23/90] x86/uv: Fix uninitialized spinlocks | ||
5 | |||
6 | commit d2ebc71d472020bc30e29afe8c4d2a85a5b41f56 upstream. | ||
7 | |||
8 | Initialize two spinlocks in tlb_uv.c and also properly define/initialize | ||
9 | the uv_irq_lock. | ||
10 | |||
11 | The lack of explicit initialization seems to be functionally | ||
12 | harmless, but it is diagnosed when these are turned on: | ||
13 | |||
14 | CONFIG_DEBUG_SPINLOCK=y | ||
15 | CONFIG_DEBUG_MUTEXES=y | ||
16 | CONFIG_DEBUG_LOCK_ALLOC=y | ||
17 | CONFIG_LOCKDEP=y | ||
18 | |||
19 | Signed-off-by: Cliff Wickman <cpw@sgi.com> | ||
20 | Cc: Dimitri Sivanich <sivanich@sgi.com> | ||
21 | Link: http://lkml.kernel.org/r/E1RnXd1-0003wU-PM@eag09.americas.sgi.com | ||
22 | [ Added the uv_irq_lock initialization fix by Dimitri Sivanich ] | ||
23 | Signed-off-by: Ingo Molnar <mingo@elte.hu> | ||
24 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
25 | --- | ||
26 | arch/x86/platform/uv/tlb_uv.c | 2 ++ | ||
27 | arch/x86/platform/uv/uv_irq.c | 2 +- | ||
28 | 2 files changed, 3 insertions(+), 1 deletions(-) | ||
29 | |||
30 | diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c | ||
31 | index 9010ca7..81aee5a 100644 | ||
32 | --- a/arch/x86/platform/uv/tlb_uv.c | ||
33 | +++ b/arch/x86/platform/uv/tlb_uv.c | ||
34 | @@ -1860,6 +1860,8 @@ static void __init init_per_cpu_tunables(void) | ||
35 | bcp->cong_reps = congested_reps; | ||
36 | bcp->cong_period = congested_period; | ||
37 | bcp->clocks_per_100_usec = usec_2_cycles(100); | ||
38 | + spin_lock_init(&bcp->queue_lock); | ||
39 | + spin_lock_init(&bcp->uvhub_lock); | ||
40 | } | ||
41 | } | ||
42 | |||
43 | diff --git a/arch/x86/platform/uv/uv_irq.c b/arch/x86/platform/uv/uv_irq.c | ||
44 | index 374a05d..f25c276 100644 | ||
45 | --- a/arch/x86/platform/uv/uv_irq.c | ||
46 | +++ b/arch/x86/platform/uv/uv_irq.c | ||
47 | @@ -25,7 +25,7 @@ struct uv_irq_2_mmr_pnode{ | ||
48 | int irq; | ||
49 | }; | ||
50 | |||
51 | -static spinlock_t uv_irq_lock; | ||
52 | +static DEFINE_SPINLOCK(uv_irq_lock); | ||
53 | static struct rb_root uv_irq_root; | ||
54 | |||
55 | static int uv_set_irq_affinity(struct irq_data *, const struct cpumask *, bool); | ||
56 | -- | ||
57 | 1.7.7.4 | ||
58 | |||