Re: [PATCH v6] KVM: x86: Add x2APIC "features" to control EOI broadcast suppression
From: Sean Christopherson
Date: Tue Jan 27 2026 - 16:49:21 EST
On Tue, Jan 27, 2026, David Woodhouse wrote:
> On Fri, 2026-01-23 at 12:56 +0000, Khushit Shah wrote:
> >
> > @@ -4931,6 +4933,8 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> > break;
> > case KVM_CAP_X2APIC_API:
> > r = KVM_X2APIC_API_VALID_FLAGS;
> > + if (kvm && !irqchip_split(kvm))
> > + r &= ~KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST;
> > break;
> > case KVM_CAP_NESTED_STATE:
> > r = kvm_x86_ops.nested_ops->get_state ?
> > @@ -6748,11 +6752,24 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
> > if (cap->args[0] & ~KVM_X2APIC_API_VALID_FLAGS)
> > break;
> >
> > + if ((cap->args[0] & KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST) &&
> > + (cap->args[0] & KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST))
> > + break;
> > +
> > + if ((cap->args[0] & KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST) &&
> > + !irqchip_split(kvm))
> > + break;
> > +
> > if (cap->args[0] & KVM_X2APIC_API_USE_32BIT_IDS)
>
> Is it possible to set KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST and
> *then* create the in-kernel I/O APIC?
Nope, we should be good on that front, kvm->arch.irqchip_mode can't be changed
once its set. I.e. the irqchip_split() check could get a false negative if it's
racing with KVM_CREATE_IRQCHIP, but it can't get a false positive and thus
incorrectly allow KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST.