[PATCH v2] powerpc: handle simultaneous interrupts at once
From: Christophe Leroy
Date: Thu Mar 16 2017 - 04:57:53 EST
It often happens to have simultaneous interrupts, for instance
when having double Ethernet attachment. With the current
implementation, we suffer the cost of kernel entry/exit for each
interrupt.
This patch introduces a loop in __do_irq() to handle all interrupts
at once before returning.
Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxx>
---
Changed from v1(RFC): simplified following remark from benh
arch/powerpc/kernel/irq.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index a018f5cae899..ba0cb6c2ee7d 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -522,7 +522,11 @@ void __do_irq(struct pt_regs *regs)
if (unlikely(!irq))
__this_cpu_inc(irq_stat.spurious_irqs);
else
- generic_handle_irq(irq);
+ do {
+ generic_handle_irq(irq);
+
+ irq = ppc_md.get_irq();
+ } while (irq);
trace_irq_exit(regs);
--
2.12.0