Re: [PATCH v6] KVM: x86: Add x2APIC "features" to control EOI broadcast suppression

From: David Woodhouse

Date: Tue Jan 27 2026 - 22:49:20 EST


On Wed, 2026-01-28 at 02:22 +0000, Huang, Kai wrote:
>  
> > Ah, so userspace which checks all the kernel's capabilities *first*
> > will not see KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST advertised,
> > because it needs to enable KVM_CAP_SPLIT_IRQCHIP first?
> >
> > I guess that's tolerable¹ but the documentation could make it clearer,
> > perhaps? I can see VMMs silently failing to detect the feature because
> > they just don't set split-irqchip before checking for it?
> >
> >
> > ¹ although I still kind of hate it and would have preferred to have the
> >    I/O APIC patch; userspace still has to intentionally *enable* that
> >    combination. But OK, I've reluctantly conceded that.
>
> To make it even more robust, perhaps we can grab kvm->lock mutex in
> kvm_vm_ioctl_enable_cap() for KVM_CAP_X2APIC_API, so that it won't race with
> KVM_CREATE_IRQCHIP (which already grabs kvm->lock) and
> KVM_CAP_SPLIT_IRQCHIP?
>
> Even more, we can add additional check in KVM_CREATE_IRQCHIP to return -
> EINVAL when it sees kvm->arch.suppress_eoi_broadcast_mode is
> KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST?

If we do that, then the query for KVM_CAP_X2APIC_API could advertise
the KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST for a freshly created KVM,
even before userspace has enabled *either* KVM_CREATE_IRQCHIP nor
KVM_CAP_SPLIT_IRQCHIP?

That would be slightly better than the existing proposed awfulness
where the kernel doesn't *admit* to having the _ENABLE_ capability
until userspace first enables the KVM_CAP_SPLIT_IRQCHIP.

Attachment: smime.p7s
Description: S/MIME cryptographic signature