Message ID | 20100218135738.GA16072@oksana.dev.rtsoft.ru (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | 0e5d359cca2d685311c4eaeb570f2e7e7915da31 |
Delegated to: | Kumar Gala |
Headers | show |
On Thu, 18 Feb 2010, Anton Vorontsov wrote: > 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>
On Feb 18, 2010, at 7:57 AM, Anton Vorontsov wrote: > 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> > --- > arch/powerpc/platforms/82xx/pq2ads-pci-pic.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) applied to next - k
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c index 9d962d7..d4a09f8 100644 --- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c +++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c @@ -24,7 +24,7 @@ #include "pq2.h" -static DEFINE_SPINLOCK(pci_pic_lock); +static DEFINE_RAW_SPINLOCK(pci_pic_lock); struct pq2ads_pci_pic { struct device_node *node; @@ -45,12 +45,12 @@ static void pq2ads_pci_mask_irq(unsigned int virq) if (irq != -1) { unsigned long flags; - spin_lock_irqsave(&pci_pic_lock, flags); + raw_spin_lock_irqsave(&pci_pic_lock, flags); setbits32(&priv->regs->mask, 1 << irq); 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) { unsigned long flags; - spin_lock_irqsave(&pci_pic_lock, flags); + raw_spin_lock_irqsave(&pci_pic_lock, flags); clrbits32(&priv->regs->mask, 1 << irq); - spin_unlock_irqrestore(&pci_pic_lock, flags); + raw_spin_unlock_irqrestore(&pci_pic_lock, flags); } }
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> --- arch/powerpc/platforms/82xx/pq2ads-pci-pic.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)