powerpc/64s/interrupt: Change must-hard-mask interrupt check from BUG to WARN
authorNicholas Piggin <npiggin@gmail.com>
Tue, 4 Oct 2022 05:11:56 +0000 (15:11 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 4 Oct 2022 12:16:20 +0000 (23:16 +1100)
This new assertion added is generally harmless and gets fixed up
naturally, but it does indicate a problem with MSR manipulation
somewhere.

Fixes: c39fb71a54f0 ("powerpc/64s/interrupt: masked handler debug check for previous hard disable")
Reported-by: Sachin Sant <sachinp@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Tested-by: Sachin Sant <sachinp@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221004051157.308999-1-npiggin@gmail.com
arch/powerpc/kernel/exceptions-64s.S

index fed983cc7ee0654005d52c1399e61743ff1ae678..87ce00766f521b857591bab2bcdeb3876ce02786 100644 (file)
@@ -2823,12 +2823,16 @@ masked_interrupt:
 #ifdef CONFIG_PPC_IRQ_SOFT_MASK_DEBUG
        /*
         * Ensure there was no previous MUST_HARD_MASK interrupt or
-        * HARD_DIS setting.
+        * HARD_DIS setting. If this does fire, the interrupt is still
+        * masked and MSR[EE] will be cleared on return, so no need to
+        * panic, but somebody probably enabled MSR[EE] under
+        * PACA_IRQ_HARD_DIS, mtmsr(mfmsr() | MSR_x) being a common
+        * cause.
         */
        lbz     r9,PACAIRQHAPPENED(r13)
        andi.   r9,r9,(PACA_IRQ_MUST_HARD_MASK|PACA_IRQ_HARD_DIS)
 0:     tdnei   r9,0
-       EMIT_BUG_ENTRY 0b,__FILE__,__LINE__,0
+       EMIT_WARN_ENTRY 0b,__FILE__,__LINE__,(BUGFLAG_WARNING | BUGFLAG_ONCE)
 #endif
        lbz     r9,PACAIRQHAPPENED(r13)
        or      r9,r9,r10