|
|
@@ -2753,7 +2753,6 @@ static void nested_vmx_setup_ctls_msrs(struct vcpu_vmx *vmx)
|
|
|
SECONDARY_EXEC_RDTSCP |
|
|
|
SECONDARY_EXEC_DESC |
|
|
|
SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE |
|
|
|
- SECONDARY_EXEC_ENABLE_VPID |
|
|
|
SECONDARY_EXEC_APIC_REGISTER_VIRT |
|
|
|
SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY |
|
|
|
SECONDARY_EXEC_WBINVD_EXITING |
|
|
|
@@ -2781,10 +2780,12 @@ static void nested_vmx_setup_ctls_msrs(struct vcpu_vmx *vmx)
|
|
|
* though it is treated as global context. The alternative is
|
|
|
* not failing the single-context invvpid, and it is worse.
|
|
|
*/
|
|
|
- if (enable_vpid)
|
|
|
+ if (enable_vpid) {
|
|
|
+ vmx->nested.nested_vmx_secondary_ctls_high |=
|
|
|
+ SECONDARY_EXEC_ENABLE_VPID;
|
|
|
vmx->nested.nested_vmx_vpid_caps = VMX_VPID_INVVPID_BIT |
|
|
|
VMX_VPID_EXTENT_SUPPORTED_MASK;
|
|
|
- else
|
|
|
+ } else
|
|
|
vmx->nested.nested_vmx_vpid_caps = 0;
|
|
|
|
|
|
if (enable_unrestricted_guest)
|