lkml.org 
[lkml]   [2021]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 15/22] powerpc/32: Remove verification of MSR_PR on syscall in the ASM entry
    Date
    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>
    ---
    arch/powerpc/kernel/entry_32.S | 30 ------------------------------
    arch/powerpc/kernel/head_32.h | 3 ---
    arch/powerpc/kernel/head_booke.h | 3 ---
    3 files changed, 36 deletions(-)

    diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
    index bbf7ecea6fe0..cffe58e63356 100644
    --- a/arch/powerpc/kernel/entry_32.S
    +++ b/arch/powerpc/kernel/entry_32.S
    @@ -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
    diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h
    index fea7fe00a690..282d8fd443a9 100644
    --- a/arch/powerpc/kernel/head_32.h
    +++ b/arch/powerpc/kernel/head_32.h
    @@ -118,8 +118,6 @@
    .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
    @@ -174,7 +172,6 @@
    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
    diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h
    index db931f1167aa..bfbd240cc8a2 100644
    --- a/arch/powerpc/kernel/head_booke.h
    +++ b/arch/powerpc/kernel/head_booke.h
    @@ -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
    --
    2.25.0
    \
     
     \ /
      Last update: 2021-02-08 17:40    [W:4.134 / U:0.996 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site