aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/rtas.c
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2022-03-08 23:50:37 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2022-05-19 23:11:27 +1000
commitc5a65e0a420d50655bf692fc7386813683c0cd81 (patch)
treee2c58770330f20b10959c70b9137b0a8f5a0d83a /arch/powerpc/kernel/rtas.c
parentpowerpc/rtas: Fix whitespace in rtas_entry.S (diff)
downloadlinux-dev-c5a65e0a420d50655bf692fc7386813683c0cd81.tar.xz
linux-dev-c5a65e0a420d50655bf692fc7386813683c0cd81.zip
powerpc/rtas: Call enter_rtas with MSR[EE] disabled
Disable MSR[EE] in C code rather than asm. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Laurent Dufour <ldufour@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20220308135047.478297-5-npiggin@gmail.com
Diffstat (limited to 'arch/powerpc/kernel/rtas.c')
-rw-r--r--arch/powerpc/kernel/rtas.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
index 03d173b1e599..c1403dc4fd66 100644
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -59,6 +59,10 @@ static inline void do_enter_rtas(unsigned long args)
msr = mfmsr();
BUG_ON(!(msr & MSR_RI));
+ BUG_ON(!irqs_disabled());
+
+ hard_irq_disable(); /* Ensure MSR[EE] is disabled on PPC64 */
+
enter_rtas(args);
srr_regs_clobbered(); /* rtas uses SRRs, invalidate */