]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/64s/interrupt: Fix lost interrupts when returning to soft-masked context
authorNicholas Piggin <npiggin@gmail.com>
Thu, 13 Oct 2022 06:44:18 +0000 (16:44 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 13 Oct 2022 11:29:49 +0000 (22:29 +1100)
commitd17c1721f46fbb9d2c20267b182b8b83baf1f793
treedc722edbe6142e7b5a5ef1618430781bd5fac259
parent5b9663f987c9df98d76652b48ece15b393f9e0b7
powerpc/64s/interrupt: Fix lost interrupts when returning to soft-masked context

It's possible for an interrupt returning to an irqs-disabled context to
lose a pending soft-masked irq because it branches to part of the exit
code for irqs-enabled contexts, which is meant to clear only the
PACA_IRQS_HARD_DIS flag from PACAIRQHAPPENED by zeroing the byte. This
just looks like a simple thinko from a recent commit (if there was no
hard mask pending, there would be no reason to clear it anyway).

This also adds comment to the code that actually does need to clear the
flag.

Fixes: 9f2ca2cbecebe ("powerpc/64/interrupt: Fix return to masked context after hard-mask irq becomes pending")
Reported-by: Sachin Sant <sachinp@linux.ibm.com>
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221013064418.1311104-1-npiggin@gmail.com
arch/powerpc/kernel/interrupt_64.S