x86/uv: Fix uninitialized spinlocks
authorCliff Wickman <cpw@sgi.com>
Wed, 18 Jan 2012 15:40:47 +0000 (09:40 -0600)
committerIngo Molnar <mingo@elte.hu>
Thu, 26 Jan 2012 09:58:34 +0000 (10:58 +0100)
Initialize two spinlocks in tlb_uv.c and also properly define/initialize
the uv_irq_lock.

The lack of explicit initialization seems to be functionally
harmless, but it is diagnosed when these are turned on:

        CONFIG_DEBUG_SPINLOCK=y
        CONFIG_DEBUG_MUTEXES=y
        CONFIG_DEBUG_LOCK_ALLOC=y
        CONFIG_LOCKDEP=y

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Cc: <stable@kernel.org>
Cc: Dimitri Sivanich <sivanich@sgi.com>
Link: http://lkml.kernel.org/r/E1RnXd1-0003wU-PM@eag09.americas.sgi.com
[ Added the uv_irq_lock initialization fix by Dimitri Sivanich ]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/platform/uv/tlb_uv.c
arch/x86/platform/uv/uv_irq.c

index 9be4cff00a2d733712adeb2ac2d71ab035ddb794..3ae0e61abd23acf7b1de580b8c234873b1870209 100644 (file)
@@ -1851,6 +1851,8 @@ static void __init init_per_cpu_tunables(void)
                bcp->cong_reps                  = congested_reps;
                bcp->cong_period                = congested_period;
                bcp->clocks_per_100_usec =      usec_2_cycles(100);
+               spin_lock_init(&bcp->queue_lock);
+               spin_lock_init(&bcp->uvhub_lock);
        }
 }
 
index 374a05d8ad22156b9a82e3ae0a643d9de785599f..f25c2765a5c9b48bbac24551dc2e82fc9e2d2ce2 100644 (file)
@@ -25,7 +25,7 @@ struct uv_irq_2_mmr_pnode{
        int                     irq;
 };
 
-static spinlock_t              uv_irq_lock;
+static DEFINE_SPINLOCK(uv_irq_lock);
 static struct rb_root          uv_irq_root;
 
 static int uv_set_irq_affinity(struct irq_data *, const struct cpumask *, bool);