aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Elwell <phil@raspberrypi.org>2016-10-27 16:21:19 +0100
committerGerd Hoffmann <kraxel@redhat.com>2017-01-25 13:39:02 +0100
commita8c775fc3196db046a95b55f063b24174371a334 (patch)
tree4262ccc591a2ecf3a4f397635f6efdfc06aab67b
parentbd0cb2e670883ea683efe931365d56a20e04ce72 (diff)
downloadlinux-a8c775fc3196db046a95b55f063b24174371a334.tar.gz
irq-bcm2836: Prevent spurious interrupts, and trap them early
The old arch-specific IRQ macros included a dsb to ensure the write to clear the mailbox interrupt completed before returning from the interrupt. The BCM2836 irqchip driver needs the same precaution to avoid spurious interrupts. Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-rw-r--r--drivers/irqchip/irq-bcm2836.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
index e7463e3c0814..a8db33b50ad9 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
@@ -175,6 +175,7 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs)
u32 ipi = ffs(mbox_val) - 1;
writel(1 << ipi, mailbox0);
+ dsb(sy);
handle_IPI(ipi, regs);
#endif
} else if (stat) {