Message ID | 20221130230934.1014142-36-seanjc@google.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | KVM: Rework kvm_init() and hardware enabling | expand |
Context | Check | Description |
---|---|---|
conchuod/tree_selection | fail | Guessing tree name failed |
On Wed, 2022-11-30 at 23:09 +0000, Sean Christopherson wrote: > Use this_cpu_has() instead of boot_cpu_has() to perform the effective > "disabled by BIOS?" checks for VMX. This will allow consolidating code > between vmx_disabled_by_bios() and vmx_check_processor_compat(). > > Checking the boot CPU isn't a strict requirement as any divergence in VMX > enabling between the boot CPU and other CPUs will result in KVM refusing > to load thanks to the aforementioned vmx_check_processor_compat(). > > Furthermore, using the boot CPU was an unintentional change introduced by > commit a4d0b2fdbcf7 ("KVM: VMX: Use VMX feature flag to query BIOS > enabling"). Prior to using the feature flags, KVM checked the raw MSR > value from the current CPU. > > Reported-by: Kai Huang <kai.huang@intel.com> > Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Kai Huang <kai.huang@intel.com> > --- > arch/x86/kvm/vmx/vmx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index e859d2b7daa4..3f7d9f88b314 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -2492,8 +2492,8 @@ static __init int cpu_has_kvm_support(void) > > static __init int vmx_disabled_by_bios(void) > { > - return !boot_cpu_has(X86_FEATURE_MSR_IA32_FEAT_CTL) || > - !boot_cpu_has(X86_FEATURE_VMX); > + return !this_cpu_has(X86_FEATURE_MSR_IA32_FEAT_CTL) || > + !this_cpu_has(X86_FEATURE_VMX); > } > > static int kvm_cpu_vmxon(u64 vmxon_pointer)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index e859d2b7daa4..3f7d9f88b314 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -2492,8 +2492,8 @@ static __init int cpu_has_kvm_support(void) static __init int vmx_disabled_by_bios(void) { - return !boot_cpu_has(X86_FEATURE_MSR_IA32_FEAT_CTL) || - !boot_cpu_has(X86_FEATURE_VMX); + return !this_cpu_has(X86_FEATURE_MSR_IA32_FEAT_CTL) || + !this_cpu_has(X86_FEATURE_VMX); } static int kvm_cpu_vmxon(u64 vmxon_pointer)
Use this_cpu_has() instead of boot_cpu_has() to perform the effective "disabled by BIOS?" checks for VMX. This will allow consolidating code between vmx_disabled_by_bios() and vmx_check_processor_compat(). Checking the boot CPU isn't a strict requirement as any divergence in VMX enabling between the boot CPU and other CPUs will result in KVM refusing to load thanks to the aforementioned vmx_check_processor_compat(). Furthermore, using the boot CPU was an unintentional change introduced by commit a4d0b2fdbcf7 ("KVM: VMX: Use VMX feature flag to query BIOS enabling"). Prior to using the feature flags, KVM checked the raw MSR value from the current CPU. Reported-by: Kai Huang <kai.huang@intel.com> Signed-off-by: Sean Christopherson <seanjc@google.com> --- arch/x86/kvm/vmx/vmx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)