Re: [PATCH v2 4/7] KVM: x86: Add a per-vendor callback to setup EFER caps

From: Yosry Ahmed

Date: Tue Jul 07 2026 - 18:29:39 EST


On Tue, Jul 7, 2026 at 2:56 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
>
> On Mon, Jul 06, 2026, Yosry Ahmed wrote:
> > Move handling EFER.SVME and EFER.LMSLE from hardware setup to a new
> > optional per-vendor callback invoked from kvm_setup_efer_caps(). This
> > centralizes allowed EFER bits handling to kvm_setup_efer_caps(),
> > facilitating following changes to move efer_reserved_bits into kvm_caps.
> >
> > Move the call to kvm_setup_efer_caps() after per-vendor ops are
> > initialized.
>
> Why?
>
> > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > index a0b2c40d93c21..a297a77469b38 100644
> > --- a/arch/x86/kvm/x86.c
> > +++ b/arch/x86/kvm/x86.c
> > @@ -6903,6 +6903,8 @@ static void kvm_setup_efer_caps(void)
> >
> > if (kvm_cpu_cap_has(X86_FEATURE_AUTOIBRS))
> > kvm_enable_efer_bits(EFER_AUTOIBRS);
> > +
> > + kvm_x86_call(setup_efer_caps)();
>
> I would rather move the togging to kvm_setup_efer_caps(), e.g.

I didn't do it this way because it creates a dependency on SVM setting
the X86_FEATURE_SVM cap before kvm_setup_efer_caps() is called. For
e.g. it would break if the call to kvm_setup_efer_caps() is moved
before the vendor-specific hardware_setup(). Maybe that's fine, but it
just seemed like the dependency can be easily avoided here by adding a
new vendor-specific callback.