From: Sean Christopherson <seanjc@google.com>
To: Maxim Levitsky <mlevitsk@redhat.com>
Cc: kvm@vger.kernel.org, Wanpeng Li <wanpengli@tencent.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Jani Nikula <jani.nikula@linux.intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Zhenyu Wang <zhenyuw@linux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Tom Lendacky <thomas.lendacky@amd.com>,
Ingo Molnar <mingo@redhat.com>, David Airlie <airlied@linux.ie>,
Thomas Gleixner <tglx@linutronix.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, intel-gfx@lists.freedesktop.org,
Daniel Vetter <daniel@ffwll.ch>, Borislav Petkov <bp@alien8.de>,
Joerg Roedel <joro@8bytes.org>,
linux-kernel@vger.kernel.org, Jim Mattson <jmattson@google.com>,
Zhi Wang <zhi.a.wang@intel.com>,
Brijesh Singh <brijesh.singh@amd.com>,
"H. Peter Anvin" <hpa@zytor.com>,
intel-gvt-dev@lists.freedesktop.org,
dri-devel@lists.freedesktop.org
Subject: Re: [RFC PATCH v3 01/19] KVM: x86: document AVIC/APICv inhibit reasons
Date: Wed, 18 May 2022 15:56:06 +0000 [thread overview]
Message-ID: <YoUXFmh9vef4CC+8@google.com> (raw)
In-Reply-To: <20220427200314.276673-2-mlevitsk@redhat.com>
On Wed, Apr 27, 2022, Maxim Levitsky wrote:
> These days there are too many AVIC/APICv inhibit
> reasons, and it doesn't hurt to have some documentation
> for them.
Please wrap at ~75 chars.
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> ---
> arch/x86/include/asm/kvm_host.h | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index f164c6c1514a4..63eae00625bda 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -1046,14 +1046,29 @@ struct kvm_x86_msr_filter {
> };
>
> enum kvm_apicv_inhibit {
> + /* APICv/AVIC is disabled by module param and/or not supported in hardware */
Rather than tag every one as APICv vs. AVIC, what about reorganizing the enums so
that the common vs. AVIC flags are bundled together? And then the redundant info
in the comments about "XYZ is inhibited" can go away too, i.e. the individual
comments can focus on explaining what triggers the inhibit (and for some, why that
action is incompatible with APIC virtualization).
E.g.
/***************************************************************/
/* INHIBITs are relevant to both Intel's APICv and AMD's AVIC. */
/***************************************************************/
/* APIC/AVIC is unsupported and/or disabled via module param. */
APICV_INHIBIT_REASON_DISABLE,
/* The local APIC is not in-kernel. See KVM_CREATE_IRQCHIP. */
APICV_INHIBIT_REASON_ABSENT,
/*
* At least one IRQ vector is configured for HyperV's AutoEOI, which
* requires manually injecting the IRQ to do EOI on behalf of the guest.
*/
APICV_INHIBIT_REASON_HYPERV,
/**********************************************/
/* INHIBITs relevant only to AMD's AVIC. */
/**********************************************/
> APICV_INHIBIT_REASON_DISABLE,
> + /* APICv/AVIC is inhibited because AutoEOI feature is being used by a HyperV guest*/
> APICV_INHIBIT_REASON_HYPERV,
> + /* AVIC is inhibited on a CPU because it runs a nested guest */
> APICV_INHIBIT_REASON_NESTED,
> + /* AVIC is inhibited due to wait for an irq window (AVIC doesn't support this) */
> APICV_INHIBIT_REASON_IRQWIN,
> + /*
> + * AVIC is inhibited because i8254 're-inject' mode is used
> + * which needs EOI intercept which AVIC doesn't support
> + */
> APICV_INHIBIT_REASON_PIT_REINJ,
> + /* AVIC is inhibited because the guest has x2apic in its CPUID*/
> APICV_INHIBIT_REASON_X2APIC,
> + /* AVIC/APICv is inhibited because KVM_GUESTDBG_BLOCKIRQ was enabled */
> APICV_INHIBIT_REASON_BLOCKIRQ,
> + /*
> + * AVIC/APICv is inhibited because the guest didn't yet
s/guest/userspace
> + * enable kernel/split irqchip
> + */
> APICV_INHIBIT_REASON_ABSENT,
> + /* AVIC is disabled because SEV doesn't support it */
> APICV_INHIBIT_REASON_SEV,
> };
>
> --
> 2.26.3
>
next prev parent reply other threads:[~2022-05-18 15:56 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-27 20:02 [RFC PATCH v3 00/19] RFC: nested AVIC Maxim Levitsky
2022-04-27 20:02 ` [RFC PATCH v3 01/19] KVM: x86: document AVIC/APICv inhibit reasons Maxim Levitsky
2022-05-18 15:56 ` Sean Christopherson [this message]
2022-05-18 17:13 ` Maxim Levitsky
2022-04-27 20:02 ` [RFC PATCH v3 02/19] KVM: x86: inhibit APICv/AVIC when the guest and/or host changes apic id/base from the defaults Maxim Levitsky
2022-05-18 8:28 ` Chao Gao
2022-05-18 9:50 ` Maxim Levitsky
2022-05-18 11:51 ` Chao Gao
2022-05-18 12:36 ` Maxim Levitsky
2022-05-18 15:39 ` Sean Christopherson
2022-05-18 17:15 ` Maxim Levitsky
2022-05-19 16:06 ` Sean Christopherson
2022-05-22 9:03 ` Maxim Levitsky
2022-05-22 14:47 ` Jim Mattson
2022-05-23 6:50 ` Maxim Levitsky
2022-05-23 17:22 ` Jim Mattson
2022-05-23 17:31 ` Sean Christopherson
2022-06-23 9:44 ` Maxim Levitsky
2022-04-27 20:02 ` [RFC PATCH v3 03/19] KVM: x86: SVM: remove avic's broken code that updated APIC ID Maxim Levitsky
2022-05-19 16:10 ` Sean Christopherson
2022-05-22 9:01 ` Maxim Levitsky
2022-05-23 17:19 ` Sean Christopherson
2022-04-27 20:02 ` [RFC PATCH v3 04/19] KVM: x86: mmu: allow to enable write tracking externally Maxim Levitsky
2022-05-19 16:27 ` Sean Christopherson
2022-05-22 10:21 ` Maxim Levitsky
2022-05-19 16:37 ` Sean Christopherson
2022-05-22 10:22 ` Maxim Levitsky
2022-07-20 14:42 ` Maxim Levitsky
2022-07-25 16:08 ` Sean Christopherson
2022-07-28 7:46 ` Maxim Levitsky
2022-08-01 15:53 ` Maxim Levitsky
2022-08-01 17:20 ` Sean Christopherson
2022-08-08 13:13 ` Nested AVIC design (was:Re: [RFC PATCH v3 04/19] KVM: x86: mmu: allow to enable write tracking externally) Maxim Levitsky
2022-09-29 22:38 ` Sean Christopherson
2022-10-03 7:27 ` Maxim Levitsky
2022-11-10 0:47 ` Sean Christopherson
2022-04-27 20:03 ` [RFC PATCH v3 05/19] x86: KVMGT: use kvm_page_track_write_tracking_enable Maxim Levitsky
2022-05-19 16:38 ` Sean Christopherson
2022-04-27 20:03 ` [RFC PATCH v3 06/19] KVM: x86: mmu: add gfn_in_memslot helper Maxim Levitsky
2022-05-19 16:43 ` Sean Christopherson
2022-05-22 10:22 ` Maxim Levitsky
2022-05-22 12:12 ` Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 07/19] KVM: x86: mmu: tweak fast path for emulation of access to nested NPT pages Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 08/19] KVM: x86: SVM: move avic state to separate struct Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 09/19] KVM: x86: nSVM: add nested AVIC tracepoints Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 10/19] KVM: x86: nSVM: implement AVIC's physid/logid table access helpers Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 11/19] KVM: x86: nSVM: implement shadowing of AVIC's physical id table Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 12/19] KVM: x86: nSVM: make nested AVIC physid write tracking be aware of the host scheduling Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 13/19] KVM: x86: nSVM: wire nested AVIC to nested guest entry/exit Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 14/19] KVM: x86: rename .set_apic_access_page_addr to reload_apic_access_page Maxim Levitsky
2022-05-19 16:55 ` Sean Christopherson
2022-05-22 10:22 ` Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 15/19] KVM: x86: nSVM: add code to reload AVIC physid table when it is invalidated Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 16/19] KVM: x86: nSVM: implement support for nested AVIC vmexits Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 17/19] KVM: x86: nSVM: implement nested AVIC doorbell emulation Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 18/19] KVM: x86: SVM/nSVM: add optional non strict AVIC doorbell mode Maxim Levitsky
2022-04-27 20:03 ` [RFC PATCH v3 19/19] KVM: x86: nSVM: expose the nested AVIC to the guest Maxim Levitsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YoUXFmh9vef4CC+8@google.com \
--to=seanjc@google.com \
--cc=airlied@linux.ie \
--cc=bp@alien8.de \
--cc=brijesh.singh@amd.com \
--cc=daniel@ffwll.ch \
--cc=dave.hansen@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hpa@zytor.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jmattson@google.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mlevitsk@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rodrigo.vivi@intel.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=x86@kernel.org \
--cc=zhenyuw@linux.intel.com \
--cc=zhi.a.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox