powerpc/64s/interrupt: Fix decrementer storm
authorNicholas Piggin <npiggin@gmail.com>
Mon, 24 Jan 2022 14:39:28 +0000 (00:39 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 25 Jan 2022 05:50:10 +0000 (16:50 +1100)
commit8defc2a5dd8f4c0cb19ecbaca8d3e89ab98524da
tree78608ba49ddba38f09811bf36ebdd12534df8520
parent22f7ff0dea9491e90b6fe808ed40c30bd791e5c2
powerpc/64s/interrupt: Fix decrementer storm

The decrementer exception can fail to be cleared when the interrupt
returns in the case where the decrementer wraps with the next timer
still beyond decrementer_max. This results in a decrementer interrupt
storm. This is triggerable with small decrementer system with hard
and soft watchdogs disabled.

Fix this by always programming the decrementer if there was no timer.

Fixes: 0faf20a1ad16 ("powerpc/64s/interrupt: Don't enable MSR[EE] in irq handlers unless perf is in use")
Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220124143930.3923442-1-npiggin@gmail.com
arch/powerpc/kernel/time.c