Paolo Bonzini <pbonzini@xxxxxxxxxx> writes: > On 18/05/21 16:43, Vitaly Kuznetsov wrote: >> APICV_INHIBIT_REASON_HYPERV is currently unconditionally forced upon >> SynIC activation as SynIC's AutoEOI is incompatible with APICv/AVIC. It is, >> however, possible to track whether the feature was actually used by the >> guest and only inhibit APICv/AVIC when needed. >> >> TLFS suggests a dedicated 'HV_DEPRECATING_AEOI_RECOMMENDED' flag to let >> Windows know that AutoEOI feature should be avoided. While it's up to >> KVM userspace to set the flag, KVM can help a bit by exposing global >> APICv/AVIC enablement: in case APICv/AVIC usage is impossible, AutoEOI >> is still preferred. >> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > > Should it also disable APICv unconditionally if > HV_DEPRECATING_AEOI_RECOMMENDED is not in the guest CPUID? That should > avoid ping-pong between enabled and disabled APICv even in pathological > cases that we cannot think about. When you run Hyper-V on KVM it doesn't use SynIC (let alone AutoEOI) but we still inhibit APICv unconditionally. The patch as-is improves this without any userspace changes required and I see it as a benefit. Going forward, we will definitely add something like 'hv-synic-noaeoi' to QEMU to make non-nesting setups benefit too but it'll take a while for this option to propagate to real world configurations (sigh). -- Vitaly