diff options
author | Yang Zhang <yang.z.zhang@Intel.com> | 2013-09-12 11:20:17 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-09-12 11:20:17 +0200 |
commit | 37b0148f9a09924422d489226813938ccde962c3 (patch) | |
tree | 364ea00c6f1fc2e19a87b5f597ddaa964c876957 | |
parent | 01afd245e63ae58a702470b5154a05f8db8a5e0b (diff) | |
download | xen-37b0148f9a09924422d489226813938ccde962c3.tar.gz xen-37b0148f9a09924422d489226813938ccde962c3.tar.bz2 xen-37b0148f9a09924422d489226813938ccde962c3.zip |
Nested VMX: Clear bit 31 of IA32_VMX_BASIC MSR
The bit 31 of revision_id will set to 1 if vmcs shadowing enabled. And
according intel SDM, the bit 31 of IA32_VMX_BASIC MSR is always 0. So we
cannot set low 32 bit of IA32_VMX_BASIC to revision_id directly. Must clear
the bit 31 to 0.
Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: f3a4eb9253826d1e49e682314c8666b28fa0b717
master date: 2013-09-10 16:41:35 +0200
-rw-r--r-- | xen/arch/x86/hvm/vmx/vvmx.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index cecc72f053..2c4801cf78 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1828,7 +1828,7 @@ int nvmx_msr_read_intercept(unsigned int msr, u64 *msr_content) switch (msr) { case MSR_IA32_VMX_BASIC: data = (host_data & (~0ul << 32)) | - ((v->arch.hvm_vmx.vmcs)->vmcs_revision_id); + (v->arch.hvm_vmx.vmcs->vmcs_revision_id & 0x7fffffff); break; case MSR_IA32_VMX_PINBASED_CTLS: case MSR_IA32_VMX_TRUE_PINBASED_CTLS: |