On Tue, May 12, 2026, Jim Mattson wrote:
> On Tue, May 12, 2026 at 2:33 PM Sean Christopherson <[email protected]> wrote:
> > From: Sean Christopherson <[email protected]>
> > Date: Tue, 12 May 2026 14:20:47 -0700
> > Subject: [PATCH 1/3] KVM: x86: Consolidate CPUID fault handling for emulator
> >  and interception logic
> >
> > Extract the logic for emulating CPUID faulting (where CPUID #GPs at CPL>0
> > outside of SMM) into a dedicated helper and use the helper for both the
> > full emulator and the intercepted-CPUID paths.
> >
> > Opportunistically drop kvm_require_cpl(), as kvm_require_cpl() was the one
> > and only user.
> >
> > No functional change intended.
> >
> > Signed-off-by: Sean Christopherson <[email protected]>
> > ---
> >  arch/x86/include/asm/kvm_host.h |  1 -
> >  arch/x86/kvm/cpuid.c            |  5 +++--
> >  arch/x86/kvm/cpuid.h            |  8 ++++++++
> >  arch/x86/kvm/emulate.c          |  6 +-----
> >  arch/x86/kvm/kvm_emulate.h      |  1 +
> >  arch/x86/kvm/x86.c              | 18 ++++++------------
> >  6 files changed, 19 insertions(+), 20 deletions(-)
> >
> > diff --git a/arch/x86/include/asm/kvm_host.h 
> > b/arch/x86/include/asm/kvm_host.h
> > index c470e40a00aa..a9005c61619b 100644
> > --- a/arch/x86/include/asm/kvm_host.h
> > +++ b/arch/x86/include/asm/kvm_host.h
> > @@ -2285,7 +2285,6 @@ void kvm_requeue_exception(struct kvm_vcpu *vcpu, 
> > unsigned int nr,
> >  void kvm_inject_page_fault(struct kvm_vcpu *vcpu, struct x86_exception 
> > *fault);
> >  void kvm_inject_emulated_page_fault(struct kvm_vcpu *vcpu,
> >                                     struct x86_exception *fault);
> > -bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl);
> >  bool kvm_require_dr(struct kvm_vcpu *vcpu, int dr);
> >
> >  static inline int __kvm_irq_line_state(unsigned long *irq_state,
> > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> > index e69156b54cff..1c95d1fa3ead 100644
> > --- a/arch/x86/kvm/cpuid.c
> > +++ b/arch/x86/kvm/cpuid.c
> > @@ -2161,9 +2161,10 @@ int kvm_emulate_cpuid(struct kvm_vcpu *vcpu)
> >  {
> >         u32 eax, ebx, ecx, edx;
> >
> > -       if (!is_smm(vcpu) && cpuid_fault_enabled(vcpu) &&
> > -           !kvm_require_cpl(vcpu, 0))
> > +       if (!kvm_is_cpuid_allowed(vcpu)) {
> > +               kvm_queue_exception_e(vcpu, GP_VECTOR, 0);
> >                 return 1;
> > +       }
> 
> That's so much better!
> 
> Will you drop this in when applying, or should I send a V3?

Go ahead and send a v3.  It slots in easy enough, but I'm trying not to get into
the habit of applying pseudo-posted patches.

Reply via email to