• Nicholas Piggin's avatar
    powerpc/powernv: process all OPAL event interrupts with kopald · 56c0b48b
    Nicholas Piggin authored
    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: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    56c0b48b
opal.c 25.3 KB