From 89f366ba53f52b1a2b0d16c47ac275372ce86ebb Mon Sep 17 00:00:00 2001 From: Zhang Xiantao Date: Tue, 15 Jan 2013 11:23:05 +0100 Subject: nEPT: Sync PDPTR fields if L2 guest in PAE paging mode For PAE L2 guest, GUEST_DPPTR registers needs to be synced for each virtual vmentry. Signed-off-by: Zhang Xiantao Acked-by: Tim Deegan Acked-by: Jun Nakajima Acked-by: Eddie Dong Committed-by: Jan Beulich --- xen/arch/x86/hvm/vmx/vvmx.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 17697a8abe..fdf4f65e2c 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -882,7 +882,15 @@ 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); - /* TODO: PDPTRs for nested ept */ + if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) && + (v->arch.hvm_vcpu.guest_efer & EFER_LMA) ) + { + vvmcs_to_shadow(vvmcs, GUEST_PDPTR0); + vvmcs_to_shadow(vvmcs, GUEST_PDPTR1); + vvmcs_to_shadow(vvmcs, GUEST_PDPTR2); + vvmcs_to_shadow(vvmcs, GUEST_PDPTR3); + } + /* TODO: CR3 target control */ } -- cgit v1.2.3