• Nicholas Piggin's avatar
    powerpc/64: irq replay remove decrementer overflow check · 59d512e4
    Nicholas Piggin authored
    This is way to catch some cases of decrementer overflow, when the
    decrementer has underflowed an odd number of times, while MSR[EE] was
    disabled.
    
    With a typical small decrementer, a timer that fires when MSR[EE] is
    disabled will be "lost" if MSR[EE] remains disabled for between 4.3 and
    8.6 seconds after the timer expires. In any case, the decrementer
    interrupt would be taken at 8.6 seconds and the timer would be found at
    that point.
    
    So this check is for catching extreme latency events, and it prevents
    those latencies from being a further few seconds long.  It's not obvious
    this is a good tradeoff. This is already a watchdog magnitude event and
    that situation is not improved a significantly with this check. For
    large decrementers, it's useless.
    
    Therefore remove this check, which avoids a mftb when enabling hard
    disabled interrupts (e.g., when enabling after coming from hardware
    interrupt handlers). Perhaps more importantly, it also removes the
    clunky MSR[EE] vs PACA_IRQ_HARD_DIS incoherency in soft-interrupt replay
    which simplifies the 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/20201107014336.2337337-1-npiggin@gmail.com
    59d512e4
irq.c 20.3 KB