26 lines
1019 B
Diff
26 lines
1019 B
Diff
|
# Commit f3a4eb9253826d1e49e682314c8666b28fa0b717
|
||
|
# Date 2013-09-10 16:41:35 +0200
|
||
|
# Author Yang Zhang <yang.z.zhang@Intel.com>
|
||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||
|
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>
|
||
|
|
||
|
--- 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
|
||
|
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:
|