RE: [PATCH v1 09/23] KVM: VMX: Switch FRED RSP0 between host and guest

From: Li, Xin3
Date: Tue Nov 14 2023 - 00:17:58 EST


> >+ if (cpu_feature_enabled(X86_FEATURE_FRED) &&
> >+ guest_cpuid_has(&vmx->vcpu, X86_FEATURE_FRED)) {
>
> IIUC, vmx_prepare_switch_to_host() is called from IRQ-disabled context. using
> guest_cpuid_has() in this context is not desired, see
> lockdep_assert_irqs_enabled() in cpuid_entry2_find().

Nice catch!

Anyway it's a bad idea to do a search call here, let me find a better way
for all FRED CPUID checks.

> >diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h index
> >f8c02bd37069..328a3447f064 100644
> >--- a/arch/x86/kvm/vmx/vmx.h
> >+++ b/arch/x86/kvm/vmx/vmx.h
> >@@ -276,6 +276,8 @@ struct vcpu_vmx {
> > #ifdef CONFIG_X86_64
> > u64 msr_host_kernel_gs_base;
> > u64 msr_guest_kernel_gs_base;
> >+ u64 msr_host_fred_rsp0;
> >+ u64 msr_guest_fred_rsp0;
>
> resetting guest fred rsp0 to 0 during vcpu reset is missing.

hmm, I assume it gets the same treatment as guest_kernel_gs_base.

It seems we don't reset guest_kernel_gs_base. No?