powerpc: Handle simultaneous interrupts at once

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@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Christophe Leroy 2017-03-16 09:55:45 +01:00 committed by Michael Ellerman
parent 3c29b60388
commit 45cb08f479

View File

@ -481,7 +481,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);