From: Zhang Xiantao Date: Tue, 15 Jan 2013 10:23:05 +0000 (+0100) Subject: nEPT: Sync PDPTR fields if L2 guest in PAE paging mode X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~7438 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=89f366ba53f52b1a2b0d16c47ac275372ce86ebb;p=xen.git 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 --- 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 */ }