Commit f9731462 authored by Vitaly Kuznetsov's avatar Vitaly Kuznetsov Committed by Sean Christopherson

KVM: nVMX: Move guest_cpuid_has_evmcs() to hyperv.h

In preparation for making Hyper-V emulation optional, move Hyper-V specific
guest_cpuid_has_evmcs() to hyperv.h.

No functional change intended.
Suggested-by: default avatarSean Christopherson <seanjc@google.com>
Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: default avatarMaxim Levitsky <mlevitsk@redhat.com>
Tested-by: default avatarJeremi Piotrowski <jpiotrowski@linux.microsoft.com>
Link: https://lore.kernel.org/r/20231205103630.1391318-12-vkuznets@redhat.comSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 225b7c11
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <linux/kvm_host.h> #include <linux/kvm_host.h>
#include "vmcs12.h" #include "vmcs12.h"
#include "vmx.h"
#define EVMPTR_INVALID (-1ULL) #define EVMPTR_INVALID (-1ULL)
#define EVMPTR_MAP_PENDING (-2ULL) #define EVMPTR_MAP_PENDING (-2ULL)
...@@ -20,6 +21,16 @@ enum nested_evmptrld_status { ...@@ -20,6 +21,16 @@ enum nested_evmptrld_status {
EVMPTRLD_ERROR, EVMPTRLD_ERROR,
}; };
static inline bool guest_cpuid_has_evmcs(struct kvm_vcpu *vcpu)
{
/*
* eVMCS is exposed to the guest if Hyper-V is enabled in CPUID and
* eVMCS has been explicitly enabled by userspace.
*/
return vcpu->arch.hyperv_enabled &&
to_vmx(vcpu)->nested.enlightened_vmcs_enabled;
}
u64 nested_get_evmptr(struct kvm_vcpu *vcpu); u64 nested_get_evmptr(struct kvm_vcpu *vcpu);
uint16_t nested_get_evmcs_version(struct kvm_vcpu *vcpu); uint16_t nested_get_evmcs_version(struct kvm_vcpu *vcpu);
int nested_enable_evmcs(struct kvm_vcpu *vcpu, int nested_enable_evmcs(struct kvm_vcpu *vcpu,
......
...@@ -745,14 +745,4 @@ static inline bool vmx_can_use_ipiv(struct kvm_vcpu *vcpu) ...@@ -745,14 +745,4 @@ static inline bool vmx_can_use_ipiv(struct kvm_vcpu *vcpu)
return lapic_in_kernel(vcpu) && enable_ipiv; return lapic_in_kernel(vcpu) && enable_ipiv;
} }
static inline bool guest_cpuid_has_evmcs(struct kvm_vcpu *vcpu)
{
/*
* eVMCS is exposed to the guest if Hyper-V is enabled in CPUID and
* eVMCS has been explicitly enabled by userspace.
*/
return vcpu->arch.hyperv_enabled &&
to_vmx(vcpu)->nested.enlightened_vmcs_enabled;
}
#endif /* __KVM_X86_VMX_H */ #endif /* __KVM_X86_VMX_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment