• Nicholas Piggin's avatar
    powerpc/64s/interrupt: Don't enable MSR[EE] in irq handlers unless perf is in use · 0faf20a1
    Nicholas Piggin authored
    Enabling MSR[EE] in interrupt handlers while interrupts are still soft
    masked allows PMIs to profile interrupt handlers to some degree, beyond
    what SIAR latching allows.
    
    When perf is not being used, this is almost useless work. It requires an
    extra mtmsrd in the irq handler, and it also opens the door to masked
    interrupts hitting and requiring replay, which is more expensive than
    just taking them directly. This effect can be noticable in high IRQ
    workloads.
    
    Avoid enabling MSR[EE] unless perf is currently in use. This saves about
    60 cycles (or 8%) on a simple decrementer interrupt microbenchmark.
    Replayed interrupts drop from 1.4% of all interrupts taken, to 0.003%.
    
    This does prevent the soft-nmi interrupt being taken in these handlers,
    but that's not too reliable anyway. The SMP watchdog will continue to be
    the reliable way to catch lockups.
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210922145452.352571-5-npiggin@gmail.com
    0faf20a1
hw_irq.h 11.8 KB