Thread (2 messages) flat view 2 messages, 2 authors, 2017-08-03

Re: powerpc/64: Fix __check_irq_replay missing decrementer interrupt

From: Michael Ellerman <hidden>
Date: 2017-08-03 10:19:41

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 <npiggin@gmail.com>
Applied to powerpc fixes, thanks.

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

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help