KVM: nVMX: allow setting the VMFUNC controls MSR
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 2 Jul 2019 12:40:40 +0000 (14:40 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 2 Jul 2019 15:36:12 +0000 (17:36 +0200)
Allow userspace to set a custom value for the VMFUNC controls MSR, as long
as the capabilities it advertises do not exceed those of the host.

Fixes: 27c42a1bb ("KVM: nVMX: Enable VMFUNC for the L1 hypervisor", 2017-08-03)
Reviewed-by: Liran Alon <liran.alon@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/nested.c

index c4e29ef..163d226 100644 (file)
@@ -1234,6 +1234,11 @@ int vmx_set_vmx_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
        case MSR_IA32_VMX_VMCS_ENUM:
                vmx->nested.msrs.vmcs_enum = data;
                return 0;
+       case MSR_IA32_VMX_VMFUNC:
+               if (data & ~vmx->nested.msrs.vmfunc_controls)
+                       return -EINVAL;
+               vmx->nested.msrs.vmfunc_controls = data;
+               return 0;
        default:
                /*
                 * The rest of the VMX capability MSRs do not support restore.