diff options
author | Zhang Xiantao <xiantao.zhang@intel.com> | 2013-01-15 11:23:05 +0100 |
---|---|---|
committer | Zhang Xiantao <xiantao.zhang@intel.com> | 2013-01-15 11:23:05 +0100 |
commit | 89f366ba53f52b1a2b0d16c47ac275372ce86ebb (patch) | |
tree | ea7d14f394ef560ecc9411a557ddf99feb800833 | |
parent | b2c0b32f5ad9ce6f280982e37afb444b94ee7d5d (diff) | |
download | xen-89f366ba53f52b1a2b0d16c47ac275372ce86ebb.tar.gz xen-89f366ba53f52b1a2b0d16c47ac275372ce86ebb.tar.bz2 xen-89f366ba53f52b1a2b0d16c47ac275372ce86ebb.zip |
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 <xiantao.zhang@intel.com>
Acked-by: Tim Deegan <tim@xen.org>
Acked-by: Jun Nakajima <jun.nakajima@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
-rw-r--r-- | xen/arch/x86/hvm/vmx/vvmx.c | 10 |
1 files changed, 9 insertions, 1 deletions
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 */ } |