On Tue, 2025-12-02 at 07:42 -0800, Sean Christopherson wrote:
The issue is that KVM "enables" SUPPRESS_EOI_BROADCAST in that the feature is exposed to the guest and can be enabled in local APICs, and that's one of the behaviors/configurations I want to preserve so that guests don't observe a feature change. Having an on/off switch doesn't work because KVM isn't fully disabling the feature, nor is KVM fully enabling the feature. It's a weird, half-baked state, hence the QUIRK.
More importantly, we can't use ENABLE bits because I want to preserve existing behavior exactly as-is. I.e. userspace needs to opt-in to disabling SUPPRESS_EOI_BROADCAST and/or to disabling IGNORE_SUPPRESS_EOI_BROADCAST_QUIRK.
To respond to that part directly...
The legacy behaviour we need to preserve is neither fully enabled, nor fully disabled. I agree that the default needs to remain this weird half-baked quirk.
But now we are giving userspace a chance to explicitly choose either a proper ENABLE or a proper DISABLE, and isn't that what those flags should be called?
You have ENABLE, you have DISABLE, and you have a warning that you probably ought to choose one of them because the default you get otherwise is weirdly broken (but there for legacy compatibility).