Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -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)
	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)
	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)
	 */
	 */
	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 = {