Commit 43a5a01b authored by Anton Vorontsov's avatar Anton Vorontsov Committed by Kumar Gala

powerpc/qe: Convert qe_ic_lock to raw_spinlock

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: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 0e5d359c
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include "qe_ic.h" #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[] = { static struct qe_ic_info qe_ic_info[] = {
[1] = { [1] = {
...@@ -201,13 +201,13 @@ static void qe_ic_unmask_irq(unsigned int virq) ...@@ -201,13 +201,13 @@ static void qe_ic_unmask_irq(unsigned int virq)
unsigned long flags; unsigned long flags;
u32 temp; 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); 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, qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg,
temp | qe_ic_info[src].mask); 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) static void qe_ic_mask_irq(unsigned int virq)
...@@ -217,7 +217,7 @@ 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; unsigned long flags;
u32 temp; 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); 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, 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) ...@@ -233,7 +233,7 @@ static void qe_ic_mask_irq(unsigned int virq)
*/ */
mb(); mb();
spin_unlock_irqrestore(&qe_ic_lock, flags); raw_spin_unlock_irqrestore(&qe_ic_lock, flags);
} }
static struct irq_chip qe_ic_irq_chip = { static struct irq_chip qe_ic_irq_chip = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment