Messages in this thread | | | From | Vitaly Kuznetsov <> | Subject | Re: [PATCH v2 5/5] KVM: x86: hyper-v: Deactivate APICv only when AutoEOI feature is in use | Date | Tue, 25 May 2021 08:23:19 +0200 |
| |
Paolo Bonzini <pbonzini@redhat.com> 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@redhat.com> > > 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
| |