diff mbox series

[1/2] powerpc/64s/interrupt: Change must-hard-mask interrupt check from BUG to WARN

Message ID 20221004051157.308999-1-npiggin@gmail.com (mailing list archive)
State Accepted
Headers show
Series [1/2] powerpc/64s/interrupt: Change must-hard-mask interrupt check from BUG to WARN | expand

Commit Message

Nicholas Piggin Oct. 4, 2022, 5:11 a.m. UTC
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>
---
 arch/powerpc/kernel/exceptions-64s.S | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Sachin Sant Oct. 4, 2022, 9:54 a.m. UTC | #1
> On 04-Oct-2022, at 10:41 AM, Nicholas Piggin <npiggin@gmail.com> wrote:
> 
> 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>
> ---

Thanks Nick. Tested both the patches on Power9 and Power10. I no longer
see the reported problem.

Tested-by: Sachin Sant <sachinp@linux.ibm.com>

- Sachin
Michael Ellerman Oct. 9, 2022, 9:58 a.m. UTC | #2
On Tue, 4 Oct 2022 15:11:56 +1000, Nicholas Piggin wrote:
> This new assertion added is generally harmless and gets fixed up
> naturally, but it does indicate a problem with MSR manipulation
> somewhere.
> 
> 

Applied to powerpc/next.

[1/2] powerpc/64s/interrupt: Change must-hard-mask interrupt check from BUG to WARN
      https://git.kernel.org/powerpc/c/8154850b28bd57a35ea73a7518ffcb9ccd5e43bc
[2/2] powerpc/64: Fix msr_check_and_set/clear MSR[EE] race
      https://git.kernel.org/powerpc/c/0fa6831811f62cfc10415d731bcf9fde2647ad81

cheers
diff mbox series

Patch

diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index dafa275f18bc..d5d35f3a824e 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -2797,12 +2797,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