]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit - arch/powerpc/platforms/powernv/opal.c
powerpc/powernv: process all OPAL event interrupts with kopald
authorNicholas Piggin <npiggin@gmail.com>
Thu, 10 May 2018 17:20:05 +0000 (03:20 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 3 Jun 2018 10:40:30 +0000 (20:40 +1000)
commit56c0b48b1e443efa5d6f4d60513302c934e55b17
tree95ae0d148361c2a1eac119173585d3475ddba936
parentee03b9b4479d1302d01cebedda3518dc967697b7
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>
arch/powerpc/platforms/powernv/opal-irqchip.c
arch/powerpc/platforms/powernv/opal.c
arch/powerpc/platforms/powernv/powernv.h