diff options
Diffstat (limited to 'configs/platform-rpi/patches/linux-4.4/0009-irqchip-bcm2836-tolerate-IRQs-while-no-flag-is-set-i.patch')
-rw-r--r-- | configs/platform-rpi/patches/linux-4.4/0009-irqchip-bcm2836-tolerate-IRQs-while-no-flag-is-set-i.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/configs/platform-rpi/patches/linux-4.4/0009-irqchip-bcm2836-tolerate-IRQs-while-no-flag-is-set-i.patch b/configs/platform-rpi/patches/linux-4.4/0009-irqchip-bcm2836-tolerate-IRQs-while-no-flag-is-set-i.patch new file mode 100644 index 0000000..49f4df9 --- /dev/null +++ b/configs/platform-rpi/patches/linux-4.4/0009-irqchip-bcm2836-tolerate-IRQs-while-no-flag-is-set-i.patch @@ -0,0 +1,34 @@ +From: Andrea Merello <andrea.merello@gmail.com> +Date: Sat, 26 Dec 2015 13:47:23 -0800 +Subject: [PATCH] irqchip: bcm2836: tolerate IRQs while no flag is set in ISR + +On my RPi2 I got a lot of: +unexpected IRQ trap at vector 00 + +This happens because bcm2836_arm_irqchip_handle_irq() is sometimes +invoked even if the ISR is clear, and this case is not handled. + +This patch explicitly handle this case, fixing the kernel complaints +about the bad IRQ lookup. + +Signed-off-by: Andrea Merello <andrea.merello@gmail.com> +Reviewed-by: Eric Anholt <eric@anholt.net> +Signed-off-by: Eric Anholt <eric@anholt.net> +Signed-off-by: Alexander Aring <alex.aring@gmail.com> +--- + drivers/irqchip/irq-bcm2836.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c +index c5ef4dfb5bb0..e314cce70201 100644 +--- a/drivers/irqchip/irq-bcm2836.c ++++ b/drivers/irqchip/irq-bcm2836.c +@@ -177,7 +177,7 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs) + writel(1 << ipi, mailbox0); + handle_IPI(ipi, regs); + #endif +- } else { ++ } else if (stat) { + u32 hwirq = ffs(stat) - 1; + + handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs); |