powerpc/32: Remove verification of MSR_PR on syscall in the ASM entry
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Mon, 8 Feb 2021 15:10:34 +0000 (15:10 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 11 Feb 2021 12:35:11 +0000 (23:35 +1100)
system_call_exception() checks MSR_PR and BUGs if a syscall
is issued from kernel mode.

No need to handle it anymore from the ASM entry code.

null_syscall reduction 2 cycles (348 => 346 cycles)

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/1eddb42cb12092b1e3d72608d182c365db3da41d.1612796617.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/head_32.h
arch/powerpc/kernel/head_booke.h

index bbf7ecea6fe07d84b188fe1cdcb822ee672c0e65..cffe58e63356413de8ab334b74c97022ae62411b 100644 (file)
@@ -421,36 +421,6 @@ ret_from_kernel_thread:
        li      r3,0
        b       ret_from_syscall
 
-       /*
-        * System call was called from kernel. We get here with SRR1 in r9.
-        * Mark the exception as recoverable once we have retrieved SRR0,
-        * trap a warning and return ENOSYS with CR[SO] set.
-        */
-       .globl  ret_from_kernel_syscall
-ret_from_kernel_syscall:
-       mfspr   r9, SPRN_SRR0
-       mfspr   r10, SPRN_SRR1
-#if !defined(CONFIG_4xx) && !defined(CONFIG_BOOKE)
-       LOAD_REG_IMMEDIATE(r11, MSR_KERNEL & ~(MSR_IR|MSR_DR))
-       mtmsr   r11
-#endif
-
-0:     trap
-       EMIT_BUG_ENTRY 0b,__FILE__,__LINE__, BUGFLAG_WARNING
-
-       li      r3, ENOSYS
-       crset   so
-#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS)
-       mtspr   SPRN_NRI, r0
-#endif
-       mtspr   SPRN_SRR0, r9
-       mtspr   SPRN_SRR1, r10
-       rfi
-#ifdef CONFIG_40x
-       b .     /* Prevent prefetch past rfi */
-#endif
-_ASM_NOKPROBE_SYMBOL(ret_from_kernel_syscall)
-
 /*
  * Top-level page fault handling.
  * This is in assembler because if do_page_fault tells us that
index af4978e9d50dc8df210fca7f73e1d56c34bef489..0e0e7b5b93ab08f01db07cb957fe57fa5f7099ea 100644 (file)
 .macro SYSCALL_ENTRY trapno
        mfspr   r9, SPRN_SRR1
        mfspr   r10, SPRN_SRR0
-       andi.   r11, r9, MSR_PR
-       beq-    99f
        LOAD_REG_IMMEDIATE(r11, MSR_KERNEL)             /* can take exceptions */
        lis     r12, 1f@h
        ori     r12, r12, 1f@l
 3:
 #endif
        b       transfer_to_syscall             /* jump to handler */
-99:    b       ret_from_kernel_syscall
 .endm
 
 .macro save_dar_dsisr_on_stack reg1, reg2, sp
index db931f1167aa13f88977575894ef0c1694b806c2..bfbd240cc8a2e390413714bf7aac99bf5655f84e 100644 (file)
@@ -106,10 +106,8 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV)
 #endif
        mfspr   r9, SPRN_SRR1
        BOOKE_CLEAR_BTB(r11)
-       andi.   r11, r9, MSR_PR
        lwz     r11, TASK_STACK - THREAD(r10)
        rlwinm  r12,r12,0,4,2   /* Clear SO bit in CR */
-       beq-    99f
        ALLOC_STACK_FRAME(r11, THREAD_SIZE - INT_FRAME_SIZE)
        stw     r12, _CCR(r11)          /* save various registers */
        mflr    r12
@@ -155,7 +153,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV)
 
 3:
        b       transfer_to_syscall     /* jump to handler */
-99:    b       ret_from_kernel_syscall
 .endm
 
 /* To handle the additional exception priority levels on 40x and Book-E