diff options
author | Anton Vorontsov <avorontsov@ru.mvista.com> | 2010-02-18 08:57:38 -0500 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2010-03-04 11:42:58 -0500 |
commit | 0e5d359cca2d685311c4eaeb570f2e7e7915da31 (patch) | |
tree | 91048ce4c5a917777da6851d533fd9a0dc1ce75f /arch/powerpc | |
parent | 7e026f72cf05137e0b52b7aa5420e95a76bd3195 (diff) |
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>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/82xx/pq2ads-pci-pic.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c index 9d962d7c72c1..d4a09f8705b5 100644 --- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c +++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "pq2.h" | 25 | #include "pq2.h" |
26 | 26 | ||
27 | static DEFINE_SPINLOCK(pci_pic_lock); | 27 | static DEFINE_RAW_SPINLOCK(pci_pic_lock); |
28 | 28 | ||
29 | struct pq2ads_pci_pic { | 29 | struct pq2ads_pci_pic { |
30 | struct device_node *node; | 30 | struct device_node *node; |
@@ -45,12 +45,12 @@ static void pq2ads_pci_mask_irq(unsigned int virq) | |||
45 | 45 | ||
46 | if (irq != -1) { | 46 | if (irq != -1) { |
47 | unsigned long flags; | 47 | unsigned long flags; |
48 | spin_lock_irqsave(&pci_pic_lock, flags); | 48 | raw_spin_lock_irqsave(&pci_pic_lock, flags); |
49 | 49 | ||
50 | setbits32(&priv->regs->mask, 1 << irq); | 50 | setbits32(&priv->regs->mask, 1 << irq); |
51 | mb(); | 51 | mb(); |
52 | 52 | ||
53 | spin_unlock_irqrestore(&pci_pic_lock, flags); | 53 | raw_spin_unlock_irqrestore(&pci_pic_lock, flags); |
54 | } | 54 | } |
55 | } | 55 | } |
56 | 56 | ||
@@ -62,9 +62,9 @@ static void pq2ads_pci_unmask_irq(unsigned int virq) | |||
62 | if (irq != -1) { | 62 | if (irq != -1) { |
63 | unsigned long flags; | 63 | unsigned long flags; |
64 | 64 | ||
65 | spin_lock_irqsave(&pci_pic_lock, flags); | 65 | raw_spin_lock_irqsave(&pci_pic_lock, flags); |
66 | clrbits32(&priv->regs->mask, 1 << irq); | 66 | clrbits32(&priv->regs->mask, 1 << irq); |
67 | spin_unlock_irqrestore(&pci_pic_lock, flags); | 67 | raw_spin_unlock_irqrestore(&pci_pic_lock, flags); |
68 | } | 68 | } |
69 | } | 69 | } |
70 | 70 | ||