powerpc/qe: Convert qe_ic_lock to raw_spinlock
authorAnton Vorontsov <avorontsov@ru.mvista.com>
Thu, 18 Feb 2010 13:43:12 +0000 (16:43 +0300)
committerKumar Gala <galak@kernel.crashing.org>
Thu, 4 Mar 2010 16:42:58 +0000 (10:42 -0600)
Interrupt controllers' hooks are executed in the atomic context, so
they are not permitted to sleep (with RT kernels non-raw spinlocks are
sleepable). So, qe_ic_lock has to be a real (non-sleepable) spinlock.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/sysdev/qe_lib/qe_ic.c

index d927da8..541ba98 100644 (file)
@@ -33,7 +33,7 @@
 
 #include "qe_ic.h"
 
-static DEFINE_SPINLOCK(qe_ic_lock);
+static DEFINE_RAW_SPINLOCK(qe_ic_lock);
 
 static struct qe_ic_info qe_ic_info[] = {
        [1] = {
@@ -201,13 +201,13 @@ static void qe_ic_unmask_irq(unsigned int virq)
        unsigned long flags;
        u32 temp;
 
-       spin_lock_irqsave(&qe_ic_lock, flags);
+       raw_spin_lock_irqsave(&qe_ic_lock, flags);
 
        temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].mask_reg);
        qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg,
                    temp | qe_ic_info[src].mask);
 
-       spin_unlock_irqrestore(&qe_ic_lock, flags);
+       raw_spin_unlock_irqrestore(&qe_ic_lock, flags);
 }
 
 static void qe_ic_mask_irq(unsigned int virq)
@@ -217,7 +217,7 @@ static void qe_ic_mask_irq(unsigned int virq)
        unsigned long flags;
        u32 temp;
 
-       spin_lock_irqsave(&qe_ic_lock, flags);
+       raw_spin_lock_irqsave(&qe_ic_lock, flags);
 
        temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].mask_reg);
        qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg,
@@ -233,7 +233,7 @@ static void qe_ic_mask_irq(unsigned int virq)
         */
        mb();
 
-       spin_unlock_irqrestore(&qe_ic_lock, flags);
+       raw_spin_unlock_irqrestore(&qe_ic_lock, flags);
 }
 
 static struct irq_chip qe_ic_irq_chip = {