mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 18:17:49 +07:00
KVM: x86: Add a helper to check kernel support when setting cpu cap
Add a helper, kvm_cpu_cap_check_and_set(), to query boot_cpu_has() as part of setting a KVM cpu capability. VMX in particular has a number of features that are dependent on both a VMCS capability and kernel support. No functional change intended. Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
b3d895d5c4
commit
8721f5b061
@ -282,4 +282,10 @@ static __always_inline void kvm_cpu_cap_set(unsigned int x86_feature)
|
||||
kvm_cpu_caps[x86_leaf] |= __feature_bit(x86_feature);
|
||||
}
|
||||
|
||||
static __always_inline void kvm_cpu_cap_check_and_set(unsigned int x86_feature)
|
||||
{
|
||||
if (boot_cpu_has(x86_feature))
|
||||
kvm_cpu_cap_set(x86_feature);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1377,8 +1377,7 @@ static __init void svm_set_cpu_caps(void)
|
||||
|
||||
/* CPUID 0x8000000A */
|
||||
/* Support next_rip if host supports it */
|
||||
if (boot_cpu_has(X86_FEATURE_NRIPS))
|
||||
kvm_cpu_cap_set(X86_FEATURE_NRIPS);
|
||||
kvm_cpu_cap_check_and_set(X86_FEATURE_NRIPS);
|
||||
|
||||
if (npt_enabled)
|
||||
kvm_cpu_cap_set(X86_FEATURE_NPT);
|
||||
|
@ -7149,18 +7149,16 @@ static __init void vmx_set_cpu_caps(void)
|
||||
kvm_cpu_cap_set(X86_FEATURE_VMX);
|
||||
|
||||
/* CPUID 0x7 */
|
||||
if (boot_cpu_has(X86_FEATURE_MPX) && kvm_mpx_supported())
|
||||
kvm_cpu_cap_set(X86_FEATURE_MPX);
|
||||
if (boot_cpu_has(X86_FEATURE_INVPCID) && cpu_has_vmx_invpcid())
|
||||
kvm_cpu_cap_set(X86_FEATURE_INVPCID);
|
||||
if (boot_cpu_has(X86_FEATURE_INTEL_PT) &&
|
||||
vmx_pt_mode_is_host_guest())
|
||||
kvm_cpu_cap_set(X86_FEATURE_INTEL_PT);
|
||||
if (kvm_mpx_supported())
|
||||
kvm_cpu_cap_check_and_set(X86_FEATURE_MPX);
|
||||
if (cpu_has_vmx_invpcid())
|
||||
kvm_cpu_cap_check_and_set(X86_FEATURE_INVPCID);
|
||||
if (vmx_pt_mode_is_host_guest())
|
||||
kvm_cpu_cap_check_and_set(X86_FEATURE_INTEL_PT);
|
||||
|
||||
/* PKU is not yet implemented for shadow paging. */
|
||||
if (enable_ept && boot_cpu_has(X86_FEATURE_PKU) &&
|
||||
boot_cpu_has(X86_FEATURE_OSPKE))
|
||||
kvm_cpu_cap_set(X86_FEATURE_PKU);
|
||||
if (enable_ept && boot_cpu_has(X86_FEATURE_OSPKE))
|
||||
kvm_cpu_cap_check_and_set(X86_FEATURE_PKU);
|
||||
|
||||
/* CPUID 0xD.1 */
|
||||
if (!vmx_xsaves_supported())
|
||||
|
Loading…
Reference in New Issue
Block a user