lkml.org 
[lkml]   [2021]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V6 29/49] x86/entry: move PUSH_AND_CLEAR_REGS out of paranoid_entry
    Date
    From: Lai Jiangshan <laijs@linux.alibaba.com>

    It is prepared for converting the whole paranoid_entry() into C code.

    No functional change intended.

    Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
    ---
    arch/x86/entry/entry_64.S | 24 +++++++++++++++++-------
    1 file changed, 17 insertions(+), 7 deletions(-)

    diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
    index 9fda034f3e92..bd5e005316a3 100644
    --- a/arch/x86/entry/entry_64.S
    +++ b/arch/x86/entry/entry_64.S
    @@ -322,9 +322,6 @@ SYM_CODE_END(ret_from_fork)
    */
    .macro idtentry_body cfunc has_error_code:req

    - PUSH_AND_CLEAR_REGS
    - ENCODE_FRAME_POINTER
    -
    /*
    * Call error_entry and switch stack settled by sync_regs().
    *
    @@ -403,6 +400,9 @@ SYM_CODE_START(\asmsym)
    .Lfrom_usermode_no_gap_\@:
    .endif

    + PUSH_AND_CLEAR_REGS
    + ENCODE_FRAME_POINTER
    +
    idtentry_body \cfunc \has_error_code

    _ASM_NOKPROBE(\asmsym)
    @@ -455,11 +455,14 @@ SYM_CODE_START(\asmsym)

    pushq $-1 /* ORIG_RAX: no syscall to restart */

    + PUSH_AND_CLEAR_REGS
    + ENCODE_FRAME_POINTER
    +
    /*
    * If the entry is from userspace, switch stacks and treat it as
    * a normal entry.
    */
    - testb $3, CS-ORIG_RAX(%rsp)
    + testb $3, CS(%rsp)
    jnz .Lfrom_usermode_switch_stack_\@

    /* paranoid_entry returns GS information for paranoid_exit in EBX. */
    @@ -510,11 +513,14 @@ SYM_CODE_START(\asmsym)
    ASM_CLAC
    cld

    + PUSH_AND_CLEAR_REGS
    + ENCODE_FRAME_POINTER
    +
    /*
    * If the entry is from userspace, switch stacks and treat it as
    * a normal entry.
    */
    - testb $3, CS-ORIG_RAX(%rsp)
    + testb $3, CS(%rsp)
    jnz .Lfrom_usermode_switch_stack_\@

    /*
    @@ -573,6 +579,9 @@ SYM_CODE_START(\asmsym)
    ASM_CLAC
    cld

    + PUSH_AND_CLEAR_REGS
    + ENCODE_FRAME_POINTER
    +
    /* paranoid_entry returns GS information for paranoid_exit in EBX. */
    call paranoid_entry
    UNWIND_HINT_REGS
    @@ -887,8 +896,6 @@ SYM_CODE_END(xen_failsafe_callback)
    */
    SYM_CODE_START_LOCAL(paranoid_entry)
    UNWIND_HINT_FUNC
    - PUSH_AND_CLEAR_REGS save_ret=1
    - ENCODE_FRAME_POINTER 8

    /*
    * Always stash CR3 in %r14. This value will be restored,
    @@ -1304,6 +1311,9 @@ end_repeat_nmi:
    */
    pushq $-1 /* ORIG_RAX: no syscall to restart */

    + PUSH_AND_CLEAR_REGS
    + ENCODE_FRAME_POINTER
    +
    /*
    * Use paranoid_entry to handle SWAPGS and CR3.
    */
    --
    2.19.1.6.gb485710b
    \
     
     \ /
      Last update: 2021-11-26 11:27    [W:3.673 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site