5f5bd83600aec014361e7a063901f1331df1fabb
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.9 / 950-0006-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
1 From 0badcb291f4fb5c3477c37b4ad4a0e27dd863272 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Fri, 4 Dec 2015 17:41:50 +0000
4 Subject: [PATCH] irq-bcm2836: Prevent spurious interrupts, and trap them early
5
6 The old arch-specific IRQ macros included a dsb to ensure the
7 write to clear the mailbox interrupt completed before returning
8 from the interrupt. The BCM2836 irqchip driver needs the same
9 precaution to avoid spurious interrupts.
10
11 Spurious interrupts are still possible for other reasons,
12 though, so trap them early.
13 ---
14 drivers/irqchip/irq-bcm2836.c | 1 +
15 1 file changed, 1 insertion(+)
16
17 --- a/drivers/irqchip/irq-bcm2836.c
18 +++ b/drivers/irqchip/irq-bcm2836.c
19 @@ -175,6 +175,7 @@ __exception_irq_entry bcm2836_arm_irqchi
20 u32 ipi = ffs(mbox_val) - 1;
21
22 writel(1 << ipi, mailbox0);
23 + dsb(sy);
24 handle_IPI(ipi, regs);
25 #endif
26 } else if (stat) {