]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
parisc: use arch_spinlock_t instead of raw_spinlock_t in irqstacks
authorHelge Deller <deller@gmx.de>
Sat, 18 May 2013 22:21:13 +0000 (22:21 +0000)
committerHelge Deller <deller@gmx.de>
Sun, 19 May 2013 09:15:41 +0000 (11:15 +0200)
We need to use arch_spinlock_t spinlocks instead of raw_spinlock_t
spinlocks for irqstack protection else we will hit the "trylock failure
on UP" error message with CONFIG_SMP=n and CONFIG_DEBUG_SPINLOCK=y.

Since we can be called recursive here even on UP (we are in the irq
handler which handles even irq bh) this spinlock error message is just
wrong.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/include/asm/processor.h
arch/parisc/kernel/irq.c

index cfbc43929cf6d20e2e53df0be823b8166ff576c0..b2dca96588f6548a69808ef7082259fb58f71ae8 100644 (file)
@@ -69,7 +69,7 @@
 
 union irq_stack_union {
        unsigned long stack[IRQ_STACK_SIZE/sizeof(unsigned long)];
-       raw_spinlock_t lock;
+       arch_spinlock_t lock;
 };
 
 DECLARE_PER_CPU(union irq_stack_union, irq_stack_union);
index 9c2d953f3de5b3f380fce7568fb85a4ea81b05e3..9ba8e5a47155ab0e3e80f5e9c18cf47e50a4e44a 100644 (file)
@@ -451,14 +451,14 @@ panic_check:
 
 #ifdef CONFIG_IRQSTACKS
 DEFINE_PER_CPU(union irq_stack_union, irq_stack_union) = {
-               .lock = __RAW_SPIN_LOCK_UNLOCKED((irq_stack_union).lock)
+               .lock = __ARCH_SPIN_LOCK_UNLOCKED,
        };
 
 static void execute_on_irq_stack(void *func, unsigned long param1)
 {
        union irq_stack_union *union_ptr;
        unsigned long irq_stack;
-       raw_spinlock_t *irq_stack_in_use;
+       arch_spinlock_t *irq_stack_in_use;
 
        union_ptr = &per_cpu(irq_stack_union, smp_processor_id());
        irq_stack = (unsigned long) &union_ptr->stack;
@@ -470,7 +470,7 @@ static void execute_on_irq_stack(void *func, unsigned long param1)
         * the irq stack usage.
         */
        irq_stack_in_use = &union_ptr->lock;
-       if (!raw_spin_trylock(irq_stack_in_use)) {
+       if (!arch_spin_trylock(irq_stack_in_use)) {
                void (*direct_call)(unsigned long p1) = func;
 
                /* We are using the IRQ stack already.
@@ -485,7 +485,7 @@ static void execute_on_irq_stack(void *func, unsigned long param1)
        __inc_irq_stat(irq_stack_counter);
 
        /* free up irq stack usage. */
-       do_raw_spin_unlock(irq_stack_in_use);
+       arch_spin_unlock(irq_stack_in_use);
 }
 
 asmlinkage void do_softirq(void)