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>
        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);