Subject: Re: powerpc/64: Fix __check_irq_replay missing decrementer interrupt

From: Michael Ellerman <[email-masked]>
Date: Thu, 3 Aug 2017 20:19:41 +1000 (AEST)

On Tue, 2017-08-01 at 13:59:28 UTC, Nicholas Piggin wrote:
> If the decrementer wraps and de-asserts the decrementer exception while
> hard-disabled, __check_irq_replay has a test to notice the wrap when
> interrupts are re-enabled.
> 
> The decrementer check must be done when clearing the PACA_IRQ_HARD_DIS
> flag, not when the PACA_IRQ_DEC flag is tested. Previously this worked
> because the decrementer interrupt was always the first one checked after
> clearing the hard disable flag, but HMI check was moved ahead of that,
> which introduced this bug.
> 
> This can cause a missed decrementer interrupt if we soft-disable
> interrupts then take an HMI which is recorded in irq_happened, then
> hard-disable interrupts for > 4s to wrap the decrementer.
> 
> Fixes: e0e0d6b739 ("powerpc/64: Replay hypervisor maintenance interrupt first")
> Signed-off-by: Nicholas Piggin <[email-masked]>

Applied to powerpc fixes, thanks.

https://git.kernel.org/powerpc/c/f283f06014c36acd1ce7f71985b8a3

cheers