lkml.org 
[lkml]   [2020]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v2 04/12] x86/xen: drop USERGS_SYSRET64 paravirt call
    From
    Date
    On 02.12.20 13:32, Borislav Petkov wrote:
    > On Fri, Nov 20, 2020 at 12:46:22PM +0100, Juergen Gross wrote:
    >> @@ -123,12 +115,15 @@ SYM_INNER_LABEL(entry_SYSCALL_64_after_hwframe, SYM_L_GLOBAL)
    >> * Try to use SYSRET instead of IRET if we're returning to
    >> * a completely clean 64-bit userspace context. If we're not,
    >> * go to the slow exit path.
    >> + * In the Xen PV case we must use iret anyway.
    >> */
    >> - movq RCX(%rsp), %rcx
    >> - movq RIP(%rsp), %r11
    >>
    >> - cmpq %rcx, %r11 /* SYSRET requires RCX == RIP */
    >> - jne swapgs_restore_regs_and_return_to_usermode
    >> + ALTERNATIVE __stringify( \
    >> + movq RCX(%rsp), %rcx; \
    >> + movq RIP(%rsp), %r11; \
    >> + cmpq %rcx, %r11; /* SYSRET requires RCX == RIP */ \
    >> + jne swapgs_restore_regs_and_return_to_usermode), \
    >> + "jmp swapgs_restore_regs_and_return_to_usermode", X86_FEATURE_XENPV
    >
    > Why such a big ALTERNATIVE when you can simply do:
    >
    > /*
    > * Try to use SYSRET instead of IRET if we're returning to
    > * a completely clean 64-bit userspace context. If we're not,
    > * go to the slow exit path.
    > * In the Xen PV case we must use iret anyway.
    > */
    > ALTERNATIVE "", "jmp swapgs_restore_regs_and_return_to_usermode", X86_FEATURE_XENPV
    >
    > movq RCX(%rsp), %rcx;
    > movq RIP(%rsp), %r11;
    > cmpq %rcx, %r11; /* SYSRET requires RCX == RIP */ \
    > jne swapgs_restore_regs_and_return_to_usermode
    >
    > ?
    >

    I wanted to avoid the additional NOPs for the bare metal case.

    If you don't mind them I can do as you are suggesting.


    Juergen
    [unhandled content-type:application/pgp-keys][unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2020-12-02 15:50    [W:3.436 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site