powerpc/powernv: process all OPAL event interrupts with kopald
Using irq_work for processing OPAL event interrupts is not necessary. irq_work is typically used to schedule work from NMI context, a softirq may be more appropriate. However OPAL events are not particularly performance or latency critical, so they can all be invoked by kopald. This patch removes the irq_work queueing, and instead wakes up kopald when there is an event to be processed. kopald processes interrupts individually, enabling irqs and calling cond_resched between each one to minimise latencies. Event handlers themselves should still use threaded handlers, workqueues, etc. as necessary to avoid high interrupts-off latencies within any single interrupt. Signed-off-by:Nicholas Piggin <npiggin@gmail.com> Signed-off-by:
Michael Ellerman <mpe@ellerman.id.au>
Showing
- arch/powerpc/platforms/powernv/opal-irqchip.c 39 additions, 48 deletionsarch/powerpc/platforms/powernv/opal-irqchip.c
- arch/powerpc/platforms/powernv/opal.c 11 additions, 12 deletionsarch/powerpc/platforms/powernv/opal.c
- arch/powerpc/platforms/powernv/powernv.h 2 additions, 1 deletionarch/powerpc/platforms/powernv/powernv.h
Loading
Please register or sign in to comment