diff options
author | Krish Sadhukhan <krish.sadhukhan@oracle.com> | 2018-09-04 14:42:58 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-09-20 00:51:45 +0200 |
commit | ba8e23db59dc07e5de74fd7bd310e297d3e4ba54 (patch) | |
tree | 0f6078a01354c450227685a66475904d76918e00 /arch | |
parent | 6de84e581c083c4357b45c31b7ef71335725d850 (diff) | |
download | linux-ba8e23db59dc07e5de74fd7bd310e297d3e4ba54.tar.gz linux-ba8e23db59dc07e5de74fd7bd310e297d3e4ba54.tar.bz2 linux-ba8e23db59dc07e5de74fd7bd310e297d3e4ba54.zip |
nVMX x86: Check VPID value on vmentry of L2 guests
According to section "Checks on VMX Controls" in Intel SDM vol 3C, the
following check needs to be enforced on vmentry of L2 guests:
If the 'enable VPID' VM-execution control is 1, the value of the
of the VPID VM-execution control field must not be 0000H.
Signed-off-by: Krish Sadhukhan <krish.sadhukhan@oracle.com>
Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
Reviewed-by: Liran Alon <liran.alon@oracle.com>
Reviewed-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/vmx.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 581bdbd9844b..06412ba46aa3 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -12373,6 +12373,9 @@ static int check_vmentry_prereqs(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12) vmcs12->guest_activity_state != GUEST_ACTIVITY_HLT) return VMXERR_ENTRY_INVALID_CONTROL_FIELD; + if (nested_cpu_has_vpid(vmcs12) && !vmcs12->virtual_processor_id) + return VMXERR_ENTRY_INVALID_CONTROL_FIELD; + if (nested_vmx_check_io_bitmap_controls(vcpu, vmcs12)) return VMXERR_ENTRY_INVALID_CONTROL_FIELD; |