summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-08-01 23:59:28 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2017-08-04 12:55:49 +1000
commit3db40c312c2c1eb2187c5731102fa8ff380e6e40 (patch)
tree2196c3e40ef7d75b372018fae21ad0bbb1731ee1 /drivers
parent09539f9b123652e969894d6299ae0df2fe12cb5d (diff)
downloadlinux-stable-3db40c312c2c1eb2187c5731102fa8ff380e6e40.tar.gz
linux-stable-3db40c312c2c1eb2187c5731102fa8ff380e6e40.tar.bz2
linux-stable-3db40c312c2c1eb2187c5731102fa8ff380e6e40.zip
powerpc/64: Fix __check_irq_replay missing decrementer interrupt
If the decrementer wraps again 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: e0e0d6b7390b ("powerpc/64: Replay hypervisor maintenance interrupt first") Cc: stable@vger.kernel.org # v4.9+ Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions