powerpc/82xx: Convert pci_pic_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, pci_pic_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>
This commit is contained in:
parent
7e026f72cf
commit
0e5d359cca
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#include "pq2.h"
|
#include "pq2.h"
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(pci_pic_lock);
|
static DEFINE_RAW_SPINLOCK(pci_pic_lock);
|
||||||
|
|
||||||
struct pq2ads_pci_pic {
|
struct pq2ads_pci_pic {
|
||||||
struct device_node *node;
|
struct device_node *node;
|
||||||
@ -45,12 +45,12 @@ static void pq2ads_pci_mask_irq(unsigned int virq)
|
|||||||
|
|
||||||
if (irq != -1) {
|
if (irq != -1) {
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
spin_lock_irqsave(&pci_pic_lock, flags);
|
raw_spin_lock_irqsave(&pci_pic_lock, flags);
|
||||||
|
|
||||||
setbits32(&priv->regs->mask, 1 << irq);
|
setbits32(&priv->regs->mask, 1 << irq);
|
||||||
mb();
|
mb();
|
||||||
|
|
||||||
spin_unlock_irqrestore(&pci_pic_lock, flags);
|
raw_spin_unlock_irqrestore(&pci_pic_lock, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ static void pq2ads_pci_unmask_irq(unsigned int virq)
|
|||||||
if (irq != -1) {
|
if (irq != -1) {
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&pci_pic_lock, flags);
|
raw_spin_lock_irqsave(&pci_pic_lock, flags);
|
||||||
clrbits32(&priv->regs->mask, 1 << irq);
|
clrbits32(&priv->regs->mask, 1 << irq);
|
||||||
spin_unlock_irqrestore(&pci_pic_lock, flags);
|
raw_spin_unlock_irqrestore(&pci_pic_lock, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user