• Nicholas Piggin's avatar
    powerpc/64/interrupt: make normal synchronous interrupts enable MSR[EE] if possible · 4423eb5a
    Nicholas Piggin authored
    Make synchronous interrupt handler entry wrappers enable MSR[EE] if
    MSR[EE] was enabled in the interrupted context. IRQs are soft-disabled
    at this point so there is no change to high level code, but it's a
    masked interrupt could fire.
    
    This is a performance disadvantage for interrupts which do not later
    call interrupt_cond_local_irq_enable(), because an an additional mtmsrd
    or wrtee instruction is executed. However the important synchronous
    interrupts (e.g., page fault) do enable interrupts, so the performance
    disadvantage is mostly avoided.
    
    In the next patch, MSR[RI] enabling can be combined with MSR[EE]
    enabling, which mitigates the performance drop for the former and gives
    a performance advanage for the latter interrupts, on 64s machines. 64e
    is coming along for the ride for now to avoid divergences with 64s in
    this tricky code.
    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-2-npiggin@gmail.com
    4423eb5a
interrupt.h 18.3 KB