xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] nested vmx: Fix the booting of L2 PAE guest
@ 2013-06-24  5:55 Dongxiao Xu
  2013-06-24  6:46 ` Keir Fraser
  0 siblings, 1 reply; 9+ messages in thread
From: Dongxiao Xu @ 2013-06-24  5:55 UTC (permalink / raw)
  To: xen-devel

When doing virtual VM entry and virtual VM exit, we need to
sychronize the PAE PDPTR related VMCS registers. With this fix,
we can boot 32bit PAE L2 guest (Win7 & RHEL6.4) on "Xen on Xen"
environment.

Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Tested-by: Yongjie Ren <yongjie.ren@intel.com>
---
 xen/arch/x86/hvm/vmx/vvmx.c | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index bb7688f..5dfbc54 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -864,6 +864,13 @@ static const u16 vmcs_gstate_field[] = {
     GUEST_SYSENTER_EIP,
 };
 
+static const u16 gpdptr_fields[] = {
+    GUEST_PDPTR0,
+    GUEST_PDPTR1,
+    GUEST_PDPTR2,
+    GUEST_PDPTR3,
+};
+
 /*
  * Context: shadow -> virtual VMCS
  */
@@ -1053,18 +1060,6 @@ static void load_shadow_guest_state(struct vcpu *v)
                      (__get_vvmcs(vvmcs, CR4_READ_SHADOW) & cr_gh_mask);
     __vmwrite(CR4_READ_SHADOW, cr_read_shadow);
 
-    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
-         (v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
-    {
-        static const u16 gpdptr_fields[] = {
-            GUEST_PDPTR0,
-            GUEST_PDPTR1,
-            GUEST_PDPTR2,
-            GUEST_PDPTR3,
-        };
-        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
-    }
-
     /* TODO: CR3 target control */
 }
 
@@ -1159,6 +1154,10 @@ static void virtual_vmentry(struct cpu_user_regs *regs)
     if ( lm_l1 != lm_l2 )
         paging_update_paging_modes(v);
 
+    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
+         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
+        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
+
     regs->eip = __get_vvmcs(vvmcs, GUEST_RIP);
     regs->esp = __get_vvmcs(vvmcs, GUEST_RSP);
     regs->eflags = __get_vvmcs(vvmcs, GUEST_RFLAGS);
@@ -1294,6 +1293,10 @@ static void virtual_vmexit(struct cpu_user_regs *regs)
     sync_vvmcs_guest_state(v, regs);
     sync_exception_state(v);
 
+    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
+         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
+        shadow_to_vvmcs_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
+
     vmx_vmcs_switch(v->arch.hvm_vmx.vmcs, nvcpu->nv_n1vmcx);
 
     nestedhvm_vcpu_exit_guestmode(v);
-- 
1.8.1.5

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-24  5:55 [PATCH] nested vmx: Fix the booting of L2 PAE guest Dongxiao Xu
@ 2013-06-24  6:46 ` Keir Fraser
  2013-06-27  1:14   ` Xu, Dongxiao
  0 siblings, 1 reply; 9+ messages in thread
From: Keir Fraser @ 2013-06-24  6:46 UTC (permalink / raw)
  To: Dongxiao Xu, xen-devel

On 24/06/2013 06:55, "Dongxiao Xu" <dongxiao.xu@intel.com> wrote:

> When doing virtual VM entry and virtual VM exit, we need to
> sychronize the PAE PDPTR related VMCS registers. With this fix,
> we can boot 32bit PAE L2 guest (Win7 & RHEL6.4) on "Xen on Xen"
> environment.
> 
> Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
> Tested-by: Yongjie Ren <yongjie.ren@intel.com>

Acked-by: Keir Fraser <keir@xen.org>

> ---
>  xen/arch/x86/hvm/vmx/vvmx.c | 27 +++++++++++++++------------
>  1 file changed, 15 insertions(+), 12 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
> index bb7688f..5dfbc54 100644
> --- a/xen/arch/x86/hvm/vmx/vvmx.c
> +++ b/xen/arch/x86/hvm/vmx/vvmx.c
> @@ -864,6 +864,13 @@ static const u16 vmcs_gstate_field[] = {
>      GUEST_SYSENTER_EIP,
>  };
>  
> +static const u16 gpdptr_fields[] = {
> +    GUEST_PDPTR0,
> +    GUEST_PDPTR1,
> +    GUEST_PDPTR2,
> +    GUEST_PDPTR3,
> +};
> +
>  /*
>   * Context: shadow -> virtual VMCS
>   */
> @@ -1053,18 +1060,6 @@ static void load_shadow_guest_state(struct vcpu *v)
>                       (__get_vvmcs(vvmcs, CR4_READ_SHADOW) & cr_gh_mask);
>      __vmwrite(CR4_READ_SHADOW, cr_read_shadow);
>  
> -    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
> -         (v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
> -    {
> -        static const u16 gpdptr_fields[] = {
> -            GUEST_PDPTR0,
> -            GUEST_PDPTR1,
> -            GUEST_PDPTR2,
> -            GUEST_PDPTR3,
> -        };
> -        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
> -    }
> -
>      /* TODO: CR3 target control */
>  }
>  
> @@ -1159,6 +1154,10 @@ static void virtual_vmentry(struct cpu_user_regs *regs)
>      if ( lm_l1 != lm_l2 )
>          paging_update_paging_modes(v);
>  
> +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
> +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
> +        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
> +
>      regs->eip = __get_vvmcs(vvmcs, GUEST_RIP);
>      regs->esp = __get_vvmcs(vvmcs, GUEST_RSP);
>      regs->eflags = __get_vvmcs(vvmcs, GUEST_RFLAGS);
> @@ -1294,6 +1293,10 @@ static void virtual_vmexit(struct cpu_user_regs *regs)
>      sync_vvmcs_guest_state(v, regs);
>      sync_exception_state(v);
>  
> +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
> +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
> +        shadow_to_vvmcs_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
> +
>      vmx_vmcs_switch(v->arch.hvm_vmx.vmcs, nvcpu->nv_n1vmcx);
>  
>      nestedhvm_vcpu_exit_guestmode(v);

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-24  6:46 ` Keir Fraser
@ 2013-06-27  1:14   ` Xu, Dongxiao
  2013-06-27  8:40     ` Jan Beulich
  0 siblings, 1 reply; 9+ messages in thread
From: Xu, Dongxiao @ 2013-06-27  1:14 UTC (permalink / raw)
  To: Keir Fraser, xen-devel@lists.xen.org

Hi stakeholders,

I saw the patch is not merged yet. Do you have any other comment about this patch? I think it is a critical fix for 4.3 release in nested virtualization side.

Thanks,
Dongxiao

> -----Original Message-----
> From: Keir Fraser [mailto:keir.xen@gmail.com]
> Sent: Monday, June 24, 2013 2:46 PM
> To: Xu, Dongxiao; xen-devel@lists.xen.org
> Subject: Re: [Xen-devel] [PATCH] nested vmx: Fix the booting of L2 PAE guest
> 
> On 24/06/2013 06:55, "Dongxiao Xu" <dongxiao.xu@intel.com> wrote:
> 
> > When doing virtual VM entry and virtual VM exit, we need to
> > sychronize the PAE PDPTR related VMCS registers. With this fix,
> > we can boot 32bit PAE L2 guest (Win7 & RHEL6.4) on "Xen on Xen"
> > environment.
> >
> > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
> > Tested-by: Yongjie Ren <yongjie.ren@intel.com>
> 
> Acked-by: Keir Fraser <keir@xen.org>
> 
> > ---
> >  xen/arch/x86/hvm/vmx/vvmx.c | 27 +++++++++++++++------------
> >  1 file changed, 15 insertions(+), 12 deletions(-)
> >
> > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
> > index bb7688f..5dfbc54 100644
> > --- a/xen/arch/x86/hvm/vmx/vvmx.c
> > +++ b/xen/arch/x86/hvm/vmx/vvmx.c
> > @@ -864,6 +864,13 @@ static const u16 vmcs_gstate_field[] = {
> >      GUEST_SYSENTER_EIP,
> >  };
> >
> > +static const u16 gpdptr_fields[] = {
> > +    GUEST_PDPTR0,
> > +    GUEST_PDPTR1,
> > +    GUEST_PDPTR2,
> > +    GUEST_PDPTR3,
> > +};
> > +
> >  /*
> >   * Context: shadow -> virtual VMCS
> >   */
> > @@ -1053,18 +1060,6 @@ static void load_shadow_guest_state(struct vcpu
> *v)
> >                       (__get_vvmcs(vvmcs, CR4_READ_SHADOW) &
> cr_gh_mask);
> >      __vmwrite(CR4_READ_SHADOW, cr_read_shadow);
> >
> > -    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
> > -         (v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
> > -    {
> > -        static const u16 gpdptr_fields[] = {
> > -            GUEST_PDPTR0,
> > -            GUEST_PDPTR1,
> > -            GUEST_PDPTR2,
> > -            GUEST_PDPTR3,
> > -        };
> > -        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields),
> gpdptr_fields);
> > -    }
> > -
> >      /* TODO: CR3 target control */
> >  }
> >
> > @@ -1159,6 +1154,10 @@ static void virtual_vmentry(struct cpu_user_regs
> *regs)
> >      if ( lm_l1 != lm_l2 )
> >          paging_update_paging_modes(v);
> >
> > +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
> > +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
> > +        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields),
> gpdptr_fields);
> > +
> >      regs->eip = __get_vvmcs(vvmcs, GUEST_RIP);
> >      regs->esp = __get_vvmcs(vvmcs, GUEST_RSP);
> >      regs->eflags = __get_vvmcs(vvmcs, GUEST_RFLAGS);
> > @@ -1294,6 +1293,10 @@ static void virtual_vmexit(struct cpu_user_regs
> *regs)
> >      sync_vvmcs_guest_state(v, regs);
> >      sync_exception_state(v);
> >
> > +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
> > +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
> > +        shadow_to_vvmcs_bulk(v, ARRAY_SIZE(gpdptr_fields),
> gpdptr_fields);
> > +
> >      vmx_vmcs_switch(v->arch.hvm_vmx.vmcs, nvcpu->nv_n1vmcx);
> >
> >      nestedhvm_vcpu_exit_guestmode(v);
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-27  1:14   ` Xu, Dongxiao
@ 2013-06-27  8:40     ` Jan Beulich
  2013-06-27 10:57       ` George Dunlap
  2013-06-27 14:51       ` Dong, Eddie
  0 siblings, 2 replies; 9+ messages in thread
From: Jan Beulich @ 2013-06-27  8:40 UTC (permalink / raw)
  To: Dongxiao Xu
  Cc: George Dunlap, Keir Fraser, Eddie Dong, Jun Nakajima,
	xen-devel@lists.xen.org

>>> On 27.06.13 at 03:14, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
> Hi stakeholders,
> 
> I saw the patch is not merged yet. Do you have any other comment about this 
> patch? I think it is a critical fix for 4.3 release in nested virtualization 
> side.

Irrespective of Keir's ack I was hoping for an ack from one of the
VMX maintainers. Even more so as they are, just like you, working
for Intel I think it would be appropriate for you to get in touch
with them to fulfill their maintainer task here. In fact you should
have Cc-ed them with your initial patch submission.

Independently of that, you should have also Cc-ed George if you
want this to go in for 4.3. In the absence of this, I had simply put
this on my post-4.3 queue...

Jan

>> -----Original Message-----
>> From: Keir Fraser [mailto:keir.xen@gmail.com]
>> Sent: Monday, June 24, 2013 2:46 PM
>> To: Xu, Dongxiao; xen-devel@lists.xen.org 
>> Subject: Re: [Xen-devel] [PATCH] nested vmx: Fix the booting of L2 PAE guest
>> 
>> On 24/06/2013 06:55, "Dongxiao Xu" <dongxiao.xu@intel.com> wrote:
>> 
>> > When doing virtual VM entry and virtual VM exit, we need to
>> > sychronize the PAE PDPTR related VMCS registers. With this fix,
>> > we can boot 32bit PAE L2 guest (Win7 & RHEL6.4) on "Xen on Xen"
>> > environment.
>> >
>> > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
>> > Tested-by: Yongjie Ren <yongjie.ren@intel.com>
>> 
>> Acked-by: Keir Fraser <keir@xen.org>
>> 
>> > ---
>> >  xen/arch/x86/hvm/vmx/vvmx.c | 27 +++++++++++++++------------
>> >  1 file changed, 15 insertions(+), 12 deletions(-)
>> >
>> > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
>> > index bb7688f..5dfbc54 100644
>> > --- a/xen/arch/x86/hvm/vmx/vvmx.c
>> > +++ b/xen/arch/x86/hvm/vmx/vvmx.c
>> > @@ -864,6 +864,13 @@ static const u16 vmcs_gstate_field[] = {
>> >      GUEST_SYSENTER_EIP,
>> >  };
>> >
>> > +static const u16 gpdptr_fields[] = {
>> > +    GUEST_PDPTR0,
>> > +    GUEST_PDPTR1,
>> > +    GUEST_PDPTR2,
>> > +    GUEST_PDPTR3,
>> > +};
>> > +
>> >  /*
>> >   * Context: shadow -> virtual VMCS
>> >   */
>> > @@ -1053,18 +1060,6 @@ static void load_shadow_guest_state(struct vcpu
>> *v)
>> >                       (__get_vvmcs(vvmcs, CR4_READ_SHADOW) &
>> cr_gh_mask);
>> >      __vmwrite(CR4_READ_SHADOW, cr_read_shadow);
>> >
>> > -    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
>> > -         (v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
>> > -    {
>> > -        static const u16 gpdptr_fields[] = {
>> > -            GUEST_PDPTR0,
>> > -            GUEST_PDPTR1,
>> > -            GUEST_PDPTR2,
>> > -            GUEST_PDPTR3,
>> > -        };
>> > -        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields),
>> gpdptr_fields);
>> > -    }
>> > -
>> >      /* TODO: CR3 target control */
>> >  }
>> >
>> > @@ -1159,6 +1154,10 @@ static void virtual_vmentry(struct cpu_user_regs
>> *regs)
>> >      if ( lm_l1 != lm_l2 )
>> >          paging_update_paging_modes(v);
>> >
>> > +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
>> > +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
>> > +        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields),
>> gpdptr_fields);
>> > +
>> >      regs->eip = __get_vvmcs(vvmcs, GUEST_RIP);
>> >      regs->esp = __get_vvmcs(vvmcs, GUEST_RSP);
>> >      regs->eflags = __get_vvmcs(vvmcs, GUEST_RFLAGS);
>> > @@ -1294,6 +1293,10 @@ static void virtual_vmexit(struct cpu_user_regs
>> *regs)
>> >      sync_vvmcs_guest_state(v, regs);
>> >      sync_exception_state(v);
>> >
>> > +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
>> > +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
>> > +        shadow_to_vvmcs_bulk(v, ARRAY_SIZE(gpdptr_fields),
>> gpdptr_fields);
>> > +
>> >      vmx_vmcs_switch(v->arch.hvm_vmx.vmcs, nvcpu->nv_n1vmcx);
>> >
>> >      nestedhvm_vcpu_exit_guestmode(v);
>> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org 
> http://lists.xen.org/xen-devel 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-27  8:40     ` Jan Beulich
@ 2013-06-27 10:57       ` George Dunlap
  2013-06-27 12:05         ` Jan Beulich
  2013-06-27 15:03         ` Jan Beulich
  2013-06-27 14:51       ` Dong, Eddie
  1 sibling, 2 replies; 9+ messages in thread
From: George Dunlap @ 2013-06-27 10:57 UTC (permalink / raw)
  To: Jan Beulich
  Cc: Dongxiao Xu, Keir Fraser, Eddie Dong, Jun Nakajima,
	xen-devel@lists.xen.org

On 27/06/13 09:40, Jan Beulich wrote:
>>>> On 27.06.13 at 03:14, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
>> Hi stakeholders,
>>
>> I saw the patch is not merged yet. Do you have any other comment about this
>> patch? I think it is a critical fix for 4.3 release in nested virtualization
>> side.
> Irrespective of Keir's ack I was hoping for an ack from one of the
> VMX maintainers. Even more so as they are, just like you, working
> for Intel I think it would be appropriate for you to get in touch
> with them to fulfill their maintainer task here. In fact you should
> have Cc-ed them with your initial patch submission.
>
> Independently of that, you should have also Cc-ed George if you
> want this to go in for 4.3. In the absence of this, I had simply put
> this on my post-4.3 queue...

Well normally I think I would have said "no" to this change.  You guys 
haven't done a very good job of engaging with the release process we've 
been trying to develop -- you didn't report this bug to me so that I 
could track it and make informed decisions regarding the release.

However, I still consider nested VMX as "experimental" -- the fact that 
in the current tree, Win7 won't boot on Xen-on-Xen kind of confirms that 
status to me. :-)  Since it is experimental, like the ARM port, it has a 
slightly different release criteria: basically, as long as you don't 
touch code in the non-experimental path, you can take your own risks 
regarding breaking functionality.

Given that this patch only touches code inside vvmx.c, I'm assuming that 
this code *cannot* be touched by anyone who is *not* running in nested 
virt mode.

If that's correct, I'm inclined to say we can accept it.  But I'd be 
interested in hearing other people's opinions.

  -George

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-27 10:57       ` George Dunlap
@ 2013-06-27 12:05         ` Jan Beulich
  2013-06-27 13:41           ` George Dunlap
  2013-06-27 15:03         ` Jan Beulich
  1 sibling, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2013-06-27 12:05 UTC (permalink / raw)
  To: George Dunlap
  Cc: Dongxiao Xu, Keir Fraser, Eddie Dong, Jun Nakajima,
	xen-devel@lists.xen.org

>>> On 27.06.13 at 12:57, George Dunlap <george.dunlap@eu.citrix.com> wrote:
> On 27/06/13 09:40, Jan Beulich wrote:
>>>>> On 27.06.13 at 03:14, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
>>> Hi stakeholders,
>>>
>>> I saw the patch is not merged yet. Do you have any other comment about this
>>> patch? I think it is a critical fix for 4.3 release in nested virtualization
>>> side.
>> Irrespective of Keir's ack I was hoping for an ack from one of the
>> VMX maintainers. Even more so as they are, just like you, working
>> for Intel I think it would be appropriate for you to get in touch
>> with them to fulfill their maintainer task here. In fact you should
>> have Cc-ed them with your initial patch submission.
>>
>> Independently of that, you should have also Cc-ed George if you
>> want this to go in for 4.3. In the absence of this, I had simply put
>> this on my post-4.3 queue...
> 
> Well normally I think I would have said "no" to this change.  You guys 
> haven't done a very good job of engaging with the release process we've 
> been trying to develop -- you didn't report this bug to me so that I 
> could track it and make informed decisions regarding the release.

So you probably meant this to be sent To: ...@intel.com, and
Cc: <me>?

> However, I still consider nested VMX as "experimental" -- the fact that 
> in the current tree, Win7 won't boot on Xen-on-Xen kind of confirms that 
> status to me. :-)  Since it is experimental, like the ARM port, it has a 
> slightly different release criteria: basically, as long as you don't 
> touch code in the non-experimental path, you can take your own risks 
> regarding breaking functionality.
> 
> Given that this patch only touches code inside vvmx.c, I'm assuming that 
> this code *cannot* be touched by anyone who is *not* running in nested 
> virt mode.
> 
> If that's correct, I'm inclined to say we can accept it.  But I'd be 
> interested in hearing other people's opinions.

I agree with that. And I may apply the patch perhaps tomorrow
even if we don't hear anything from the VMX maintainers.

Jan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-27 12:05         ` Jan Beulich
@ 2013-06-27 13:41           ` George Dunlap
  0 siblings, 0 replies; 9+ messages in thread
From: George Dunlap @ 2013-06-27 13:41 UTC (permalink / raw)
  To: Jan Beulich
  Cc: Dongxiao Xu, Keir Fraser, Eddie Dong, Jun Nakajima,
	xen-devel@lists.xen.org

On 27/06/13 13:05, Jan Beulich wrote:
>>>> On 27.06.13 at 12:57, George Dunlap <george.dunlap@eu.citrix.com> wrote:
>> On 27/06/13 09:40, Jan Beulich wrote:
>>>>>> On 27.06.13 at 03:14, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
>>>> Hi stakeholders,
>>>>
>>>> I saw the patch is not merged yet. Do you have any other comment about this
>>>> patch? I think it is a critical fix for 4.3 release in nested virtualization
>>>> side.
>>> Irrespective of Keir's ack I was hoping for an ack from one of the
>>> VMX maintainers. Even more so as they are, just like you, working
>>> for Intel I think it would be appropriate for you to get in touch
>>> with them to fulfill their maintainer task here. In fact you should
>>> have Cc-ed them with your initial patch submission.
>>>
>>> Independently of that, you should have also Cc-ed George if you
>>> want this to go in for 4.3. In the absence of this, I had simply put
>>> this on my post-4.3 queue...
>> Well normally I think I would have said "no" to this change.  You guys
>> haven't done a very good job of engaging with the release process we've
>> been trying to develop -- you didn't report this bug to me so that I
>> could track it and make informed decisions regarding the release.
> So you probably meant this to be sent To: ...@intel.com, and
> Cc: <me>?

Yes, sorry -- I meant the "you guys" to be the developers working on 
nested vmx.  You (Jan) have been very engaged with the process, and I 
appreciate it. :-)

  -George

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-27  8:40     ` Jan Beulich
  2013-06-27 10:57       ` George Dunlap
@ 2013-06-27 14:51       ` Dong, Eddie
  1 sibling, 0 replies; 9+ messages in thread
From: Dong, Eddie @ 2013-06-27 14:51 UTC (permalink / raw)
  To: Jan Beulich, Xu, Dongxiao
  Cc: George Dunlap, Keir Fraser, Dong, Eddie, Nakajima, Jun,
	xen-devel@lists.xen.org

My mailbox has problem :(
Anyway, acked.

Eddie

-----Original Message-----
From: Jan Beulich [mailto:JBeulich@suse.com] 
Sent: Thursday, June 27, 2013 4:40 PM
To: Xu, Dongxiao
Cc: George Dunlap; Keir Fraser; Dong, Eddie; Nakajima, Jun; xen-devel@lists.xen.org
Subject: Re: [Xen-devel] [PATCH] nested vmx: Fix the booting of L2 PAE guest

>>> On 27.06.13 at 03:14, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
> Hi stakeholders,
> 
> I saw the patch is not merged yet. Do you have any other comment about this 
> patch? I think it is a critical fix for 4.3 release in nested virtualization 
> side.

Irrespective of Keir's ack I was hoping for an ack from one of the
VMX maintainers. Even more so as they are, just like you, working
for Intel I think it would be appropriate for you to get in touch
with them to fulfill their maintainer task here. In fact you should
have Cc-ed them with your initial patch submission.

Independently of that, you should have also Cc-ed George if you
want this to go in for 4.3. In the absence of this, I had simply put
this on my post-4.3 queue...

Jan

>> -----Original Message-----
>> From: Keir Fraser [mailto:keir.xen@gmail.com]
>> Sent: Monday, June 24, 2013 2:46 PM
>> To: Xu, Dongxiao; xen-devel@lists.xen.org 
>> Subject: Re: [Xen-devel] [PATCH] nested vmx: Fix the booting of L2 PAE guest
>> 
>> On 24/06/2013 06:55, "Dongxiao Xu" <dongxiao.xu@intel.com> wrote:
>> 
>> > When doing virtual VM entry and virtual VM exit, we need to
>> > sychronize the PAE PDPTR related VMCS registers. With this fix,
>> > we can boot 32bit PAE L2 guest (Win7 & RHEL6.4) on "Xen on Xen"
>> > environment.
>> >
>> > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
>> > Tested-by: Yongjie Ren <yongjie.ren@intel.com>
>> 
>> Acked-by: Keir Fraser <keir@xen.org>
>> 
>> > ---
>> >  xen/arch/x86/hvm/vmx/vvmx.c | 27 +++++++++++++++------------
>> >  1 file changed, 15 insertions(+), 12 deletions(-)
>> >
>> > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
>> > index bb7688f..5dfbc54 100644
>> > --- a/xen/arch/x86/hvm/vmx/vvmx.c
>> > +++ b/xen/arch/x86/hvm/vmx/vvmx.c
>> > @@ -864,6 +864,13 @@ static const u16 vmcs_gstate_field[] = {
>> >      GUEST_SYSENTER_EIP,
>> >  };
>> >
>> > +static const u16 gpdptr_fields[] = {
>> > +    GUEST_PDPTR0,
>> > +    GUEST_PDPTR1,
>> > +    GUEST_PDPTR2,
>> > +    GUEST_PDPTR3,
>> > +};
>> > +
>> >  /*
>> >   * Context: shadow -> virtual VMCS
>> >   */
>> > @@ -1053,18 +1060,6 @@ static void load_shadow_guest_state(struct vcpu
>> *v)
>> >                       (__get_vvmcs(vvmcs, CR4_READ_SHADOW) &
>> cr_gh_mask);
>> >      __vmwrite(CR4_READ_SHADOW, cr_read_shadow);
>> >
>> > -    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
>> > -         (v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
>> > -    {
>> > -        static const u16 gpdptr_fields[] = {
>> > -            GUEST_PDPTR0,
>> > -            GUEST_PDPTR1,
>> > -            GUEST_PDPTR2,
>> > -            GUEST_PDPTR3,
>> > -        };
>> > -        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields),
>> gpdptr_fields);
>> > -    }
>> > -
>> >      /* TODO: CR3 target control */
>> >  }
>> >
>> > @@ -1159,6 +1154,10 @@ static void virtual_vmentry(struct cpu_user_regs
>> *regs)
>> >      if ( lm_l1 != lm_l2 )
>> >          paging_update_paging_modes(v);
>> >
>> > +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
>> > +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
>> > +        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields),
>> gpdptr_fields);
>> > +
>> >      regs->eip = __get_vvmcs(vvmcs, GUEST_RIP);
>> >      regs->esp = __get_vvmcs(vvmcs, GUEST_RSP);
>> >      regs->eflags = __get_vvmcs(vvmcs, GUEST_RFLAGS);
>> > @@ -1294,6 +1293,10 @@ static void virtual_vmexit(struct cpu_user_regs
>> *regs)
>> >      sync_vvmcs_guest_state(v, regs);
>> >      sync_exception_state(v);
>> >
>> > +    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
>> > +         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
>> > +        shadow_to_vvmcs_bulk(v, ARRAY_SIZE(gpdptr_fields),
>> gpdptr_fields);
>> > +
>> >      vmx_vmcs_switch(v->arch.hvm_vmx.vmcs, nvcpu->nv_n1vmcx);
>> >
>> >      nestedhvm_vcpu_exit_guestmode(v);
>> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org 
> http://lists.xen.org/xen-devel 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] nested vmx: Fix the booting of L2 PAE guest
  2013-06-27 10:57       ` George Dunlap
  2013-06-27 12:05         ` Jan Beulich
@ 2013-06-27 15:03         ` Jan Beulich
  1 sibling, 0 replies; 9+ messages in thread
From: Jan Beulich @ 2013-06-27 15:03 UTC (permalink / raw)
  To: George Dunlap
  Cc: Dongxiao Xu, Keir Fraser, Eddie Dong, Jun Nakajima,
	xen-devel@lists.xen.org

>>> On 27.06.13 at 12:57, George Dunlap <george.dunlap@eu.citrix.com> wrote:
> On 27/06/13 09:40, Jan Beulich wrote:
>>>>> On 27.06.13 at 03:14, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
>>> Hi stakeholders,
>>>
>>> I saw the patch is not merged yet. Do you have any other comment about this
>>> patch? I think it is a critical fix for 4.3 release in nested virtualization
>>> side.
>> Irrespective of Keir's ack I was hoping for an ack from one of the
>> VMX maintainers. Even more so as they are, just like you, working
>> for Intel I think it would be appropriate for you to get in touch
>> with them to fulfill their maintainer task here. In fact you should
>> have Cc-ed them with your initial patch submission.
>>
>> Independently of that, you should have also Cc-ed George if you
>> want this to go in for 4.3. In the absence of this, I had simply put
>> this on my post-4.3 queue...
> 
> Well normally I think I would have said "no" to this change.  You guys 
> haven't done a very good job of engaging with the release process we've 
> been trying to develop -- you didn't report this bug to me so that I 
> could track it and make informed decisions regarding the release.
> 
> However, I still consider nested VMX as "experimental" -- the fact that 
> in the current tree, Win7 won't boot on Xen-on-Xen kind of confirms that 
> status to me. :-)  Since it is experimental, like the ARM port, it has a 
> slightly different release criteria: basically, as long as you don't 
> touch code in the non-experimental path, you can take your own risks 
> regarding breaking functionality.
> 
> Given that this patch only touches code inside vvmx.c, I'm assuming that 
> this code *cannot* be touched by anyone who is *not* running in nested 
> virt mode.
> 
> If that's correct, I'm inclined to say we can accept it.  But I'd be 
> interested in hearing other people's opinions.

Committed now that we have Eddie's ack.

Jan

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-06-27 15:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-24  5:55 [PATCH] nested vmx: Fix the booting of L2 PAE guest Dongxiao Xu
2013-06-24  6:46 ` Keir Fraser
2013-06-27  1:14   ` Xu, Dongxiao
2013-06-27  8:40     ` Jan Beulich
2013-06-27 10:57       ` George Dunlap
2013-06-27 12:05         ` Jan Beulich
2013-06-27 13:41           ` George Dunlap
2013-06-27 15:03         ` Jan Beulich
2013-06-27 14:51       ` Dong, Eddie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).