powerpc/64s: system call avoid setting MSR[RI] until we set MSR[EE]
authorNicholas Piggin <npiggin@gmail.com>
Thu, 17 Jun 2021 15:51:06 +0000 (01:51 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 24 Jun 2021 14:06:56 +0000 (00:06 +1000)
This extends the MSR[RI]=0 window a little further into the system
call in order to pair RI and EE enabling with a single mtmsrd.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210617155116.2167984-8-npiggin@gmail.com
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/kernel/interrupt_64.S

index 3d238a3..18c96df 100644 (file)
@@ -1861,8 +1861,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE)
        mtctr   r10
        bctr
        .else
-       li      r10,MSR_RI
-       mtmsrd  r10,1                   /* Set RI (EE=0) */
 #ifdef CONFIG_RELOCATABLE
        __LOAD_HANDLER(r10, system_call_common)
        mtctr   r10
index e17a77a..ab6b996 100644 (file)
@@ -283,9 +283,9 @@ END_BTB_FLUSH_SECTION
         * trace_hardirqs_off().
         */
        li      r11,IRQS_ALL_DISABLED
-       li      r12,PACA_IRQ_HARD_DIS
+       li      r12,-1 /* Set MSR_EE and MSR_RI */
        stb     r11,PACAIRQSOFTMASK(r13)
-       stb     r12,PACAIRQHAPPENED(r13)
+       mtmsrd  r12,1
 
        /* Calling convention has r9 = orig r0, r10 = regs */
        mr      r9,r0