[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 5/9] x86/vvmx: make updating shadow EPTP value more efficient



On 10/5/17, 6:13 AM, "Andrew Cooper" wrote:

    On 05/10/17 14:04, Sergey Dyasli wrote:
    > On Thu, 2017-10-05 at 03:27 -0600, Jan Beulich wrote:
    >>>>> On 05.10.17 at 10:18, <sergey.dyasli@xxxxxxxxxx> wrote:
    >>> --- a/xen/arch/x86/hvm/vmx/entry.S
    >>> +++ b/xen/arch/x86/hvm/vmx/entry.S
    >>> @@ -80,7 +80,7 @@ UNLIKELY_END(realmode)
    >>>          mov  %rsp,%rdi
    >>>          call vmx_vmenter_helper
    >>>          cmp  $0,%eax
    >>> -        jne .Lvmx_vmentry_restart
    >>> +        je .Lvmx_vmentry_restart
    >> If you make the function return bool, the cmp above also needs
    >> changing (and then preferably to "test %al, %al", in which case
    >> it would then also better be "jz" instead of "je").
    > Here's the updated delta:
    >
    > diff --git a/xen/arch/x86/hvm/vmx/entry.S b/xen/arch/x86/hvm/vmx/entry.S
    > index 9fb8f89220..47cd674260 100644
    > --- a/xen/arch/x86/hvm/vmx/entry.S
    > +++ b/xen/arch/x86/hvm/vmx/entry.S
    > @@ -79,8 +79,8 @@ UNLIKELY_END(realmode)
    >  
    >          mov  %rsp,%rdi
    >          call vmx_vmenter_helper
    > -        cmp  $0,%eax
    > -        jne .Lvmx_vmentry_restart
    > +        test %al, %al
    > +        jz .Lvmx_vmentry_restart
    >          mov  VCPU_hvm_guest_cr2(%rbx),%rax
    >  
    >          pop  %r15
    > diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
    > index c9a4111267..a5c2bd71cd 100644
    > --- a/xen/arch/x86/hvm/vmx/vmx.c
    > +++ b/xen/arch/x86/hvm/vmx/vmx.c
    > @@ -4197,7 +4197,8 @@ static void lbr_fixup(void)
    >          bdw_erratum_bdf14_fixup();
    >  }
    >  
    > -int vmx_vmenter_helper(const struct cpu_user_regs *regs)
    > +/* Returns false if the vmentry has to be restarted */
    > +bool vmx_vmenter_helper(const struct cpu_user_regs *regs)
    >  {
    >      struct vcpu *curr = current;
    >      u32 new_asid, old_asid;
    > @@ -4206,7 +4207,7 @@ int vmx_vmenter_helper(const struct cpu_user_regs 
*regs)
    >  
    >      /* Shadow EPTP can't be updated here because irqs are disabled */
    >       if ( nestedhvm_vcpu_in_guestmode(curr) && 
vcpu_nestedhvm(curr).stale_np2m )
    > -         return 1;
    > +         return false;
    >  
    >      if ( curr->domain->arch.hvm_domain.pi_ops.do_resume )
    >          curr->domain->arch.hvm_domain.pi_ops.do_resume(curr);
    > @@ -4269,7 +4270,7 @@ int vmx_vmenter_helper(const struct cpu_user_regs 
*regs)
    >      __vmwrite(GUEST_RSP,    regs->rsp);
    >      __vmwrite(GUEST_RFLAGS, regs->rflags | X86_EFLAGS_MBS);
    >  
    > -    return 0;
    > +    return true;
    >  }
    
    With this, the whole series is Acked-by: Andrew Cooper
    <andrew.cooper3@xxxxxxxxxx>

Acked-by: Jun Nakajima <jun.nakajima@xxxxxxxxx>
  
---
Jun
Intel Open Source Technology Center
 


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.