| Message ID | 20250224235542.2562848-3-seanjc@google.com |
|---|---|
| State | Handled Elsewhere |
| Headers | show
Return-Path:
<kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>
X-Original-To: incoming@patchwork.ozlabs.org
Delivered-To: patchwork-incoming@legolas.ozlabs.org
Authentication-Results: legolas.ozlabs.org;
dkim=pass (2048-bit key;
secure) header.d=lists.infradead.org header.i=@lists.infradead.org
header.a=rsa-sha256 header.s=bombadil.20210309 header.b=R7ZFmpC5;
dkim=fail reason="signature verification failed" (2048-bit key;
unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256
header.s=20230601 header.b=3XMCoqts;
dkim-atps=neutral
Authentication-Results: legolas.ozlabs.org;
spf=none (no SPF record) smtp.mailfrom=lists.infradead.org
(client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;
envelope-from=kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;
receiver=patchwork.ozlabs.org)
Received: from bombadil.infradead.org (bombadil.infradead.org
[IPv6:2607:7c80:54:3::133])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384)
(No client certificate requested)
by legolas.ozlabs.org (Postfix) with ESMTPS id 4Z1yRQ4L3Lz1yKZ
for <incoming@patchwork.ozlabs.org>; Tue, 25 Feb 2025 11:00:34 +1100 (AEDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=lists.infradead.org; s=bombadil.20210309; h=Sender:
Content-Transfer-Encoding:Content-Type:Reply-To:List-Subscribe:List-Help:
List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID
:References:Mime-Version:In-Reply-To:Date:Content-ID:Content-Description:
Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
List-Owner; bh=uF9t6islFjBJDeliOlo46VSAiq+x9wbPwZmCTm2roto=; b=R7ZFmpC5XNNpyx
2bw3xWjmHSCDZ95c8MAVnzY8ZTvPp4ckhceaW3xQpb1l5FmTD7DLtZa6VxtlK/blhVmhBIjXxkFss
sxPhRG+LwSekOCN11qwgFbS4OOLmmyYblRTJNm1g5yGrcBV+miKsPAjHlokX5vRlpcA8wgeZKaOdL
VJsnEZxsHl0YrkGuwJcrIuAhTW/DCKDB0tnyF9zKID84k6yYpS0H4Ym7B8W9Eep6XAcVXSZHXSQi1
ny9qzETe70njKpZBH1BiK9LzSHflEGKlF8YQ3mBtQa74d4bz7Pa/+Cp7BpTbniyh7kuYyBJ9cTNvA
7X+WY2M2/BadS7mEz2Pg==;
Received: from localhost ([::1] helo=bombadil.infradead.org)
by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux))
id 1tmiNH-0000000FZNQ-0qE8;
Tue, 25 Feb 2025 00:00:35 +0000
Received: from mail-pj1-x104a.google.com ([2607:f8b0:4864:20::104a])
by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux))
id 1tmiIg-0000000FXvr-1CjS
for kvm-riscv@lists.infradead.org;
Mon, 24 Feb 2025 23:55:51 +0000
Received: by mail-pj1-x104a.google.com with SMTP id
98e67ed59e1d1-2fc2fee4425so16668955a91.0
for <kvm-riscv@lists.infradead.org>;
Mon, 24 Feb 2025 15:55:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1740441349; x=1741046149;
darn=lists.infradead.org;
h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
:date:reply-to:from:to:cc:subject:date:message-id:reply-to;
bh=TGU0ybTwy223eIpDzZVLI/W8vnqy8rZ9uLMIqzhcN/c=;
b=3XMCoqtsr798n0f6HhXhnV6oQFCHAsUVbS0Mg3Aj074V86Ptdv9WyCqGdO74gUK3sO
JYxpixMVnrGjTfcvGby7hnpo0YZbTVJ8JCjj2eTNrZ73wPgyzTyJdQIepkCtpv02R9yN
8R3abCAtm+5262z2jnAG/Q7vxICihK1upCVW84gu5Cxzq5rKfagESHmKpwq2wsx2GTW+
zeapiLUkC0HUtPpanwL8uSu+AVI++yRxH02LdfZKZmzb4aS/ewAXhFeHHsvRBxu5+Pyz
2l5uiswSSLPHOKaiqBXoR4Ma6eppKHrW75q6AoR2Q2Od2fvrfv251pSLCHf5vislVZ8S
BbWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1740441349; x=1741046149;
h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
:date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=TGU0ybTwy223eIpDzZVLI/W8vnqy8rZ9uLMIqzhcN/c=;
b=Ss/JQM8tQP9GT5ERty4yJ/JqQTJ5agy4yVHjkH5mP6zCEKPyjoHixZ8inB3vbAz/j8
EzgUbX87GnAC9OLUu6U4500K5YpjGUGecvu2gHy5ffyay/ImAXvSgkEdYsWJS7CdxECD
/CMOfrZ5ksWU7ECoRABpGd7gXmzjHRtTdXAB4L3YqtAQzO2T8t4oVo+ssyX9Tb9cUl/e
QFf84tmRTk1Lm2soHtavnDMSdDEvp7a9KPiUMXbHbXNT9KR6zas6bDXWyYDeCG5+Zt85
7jrMpuoRLxuqwvZU9X2M1ztxkDliyGtqkkpswVuct0E+C6UpySw5OMrjDbLhOs29DtAt
VzZw==
X-Forwarded-Encrypted: i=1;
AJvYcCWx66ii/3dyYOmFhHjNx/3vRB+AldBxrqUEvTnGw14h9NCgcNhYxA86Mxp0nVE1J/vV/uemihnxuJw=@lists.infradead.org
X-Gm-Message-State: AOJu0YzR+yV1u+N7JWAQON41RiIdMFP+BGW/UWmIPSJbCDRRfVBbucJS
3iMxa/kyQg68fir4zhzM1l873dCBXN1Abv3/tSODZx1gnVHUbDAHD9NKyjOS0TIYfTWVYfTrBxJ
IfA==
X-Google-Smtp-Source:
AGHT+IHcos0szxLwYcsW2Q/WbhHjoZ/1wFjhF3Xa+8fw1kzKNZT2q6/VDS58iA2uFYrVe3USusRDS/R8AlY=
X-Received: from pjbnb15.prod.google.com
([2002:a17:90b:35cf:b0:2fc:b544:749e])
(user=seanjc job=prod-delivery.src-stubby-dispatcher) by
2002:a17:90a:e7cd:b0:2fa:17d2:166
with SMTP id 98e67ed59e1d1-2fce7b40077mr23992311a91.31.1740441348957; Mon, 24
Feb 2025 15:55:48 -0800 (PST)
Date: Mon, 24 Feb 2025 15:55:37 -0800
In-Reply-To: <20250224235542.2562848-1-seanjc@google.com>
Mime-Version: 1.0
References: <20250224235542.2562848-1-seanjc@google.com>
X-Mailer: git-send-email 2.48.1.658.g4767266eb4-goog
Message-ID: <20250224235542.2562848-3-seanjc@google.com>
Subject: [PATCH 2/7] KVM: nVMX: Process events on nested VM-Exit if injectable
IRQ or NMI is pending
From: Sean Christopherson <seanjc@google.com>
To: Marc Zyngier <maz@kernel.org>, Oliver Upton <oliver.upton@linux.dev>,
Tianrui Zhao <zhaotianrui@loongson.cn>, Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Anup Patel <anup@brainfault.org>, Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>, Albert Ou <aou@eecs.berkeley.edu>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org,
linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org,
Aaron Lewis <aaronlewis@google.com>, Jim Mattson <jmattson@google.com>,
Yan Zhao <yan.y.zhao@intel.com>,
Rick P Edgecombe <rick.p.edgecombe@intel.com>,
Kai Huang <kai.huang@intel.com>, Isaku Yamahata <isaku.yamahata@intel.com>
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
X-CRM114-CacheID: sfid-20250224_155550_319381_3FAF17BE
X-CRM114-Status: UNSURE ( 9.92 )
X-CRM114-Notice: Please train this message.
X-Spam-Score: -9.5 (---------)
X-Spam-Report: Spam detection software,
running on the system "bombadil.infradead.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Process pending events on nested VM-Exit if the vCPU has an
injectable IRQ or NMI, as the event may have become pending while L2 was
active, i.e. may not be tracked in the context of vmcs01. E.g. if L [...]
Content analysis details: (-9.5 points, 5.0 required)
pts rule name description
---- ----------------------
--------------------------------------------------
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no
trust
[2607:f8b0:4864:20:0:0:0:104a listed in]
[list.dnswl.org]
-0.0 SPF_PASS SPF: sender matches SPF record
-7.5 USER_IN_DEF_DKIM_WL From: address is in the default DKIM welcome-list
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
not necessarily valid
-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
author's
domain
-0.1 DKIM_VALID Message has at least one valid DKIM or DK
signature
-1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%
[score: 0.0000]
-0.0 DKIMWL_WL_MED DKIMwl.org - Medium trust sender
X-BeenThere: kvm-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: <kvm-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/kvm-riscv>,
<mailto:kvm-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/kvm-riscv/>
List-Post: <mailto:kvm-riscv@lists.infradead.org>
List-Help: <mailto:kvm-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/kvm-riscv>,
<mailto:kvm-riscv-request@lists.infradead.org?subject=subscribe>
Reply-To: Sean Christopherson <seanjc@google.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "kvm-riscv" <kvm-riscv-bounces@lists.infradead.org>
Errors-To: kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org
|
| Series |
KVM: x86: nVMX IRQ fix and VM teardown cleanups
|
expand
|
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index bca2575837ce..8220b09e91ce 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -5084,6 +5084,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 vm_exit_reason, load_vmcs12_host_state(vcpu, vmcs12); + /* + * Process events if an injectable IRQ or NMI is pending, even + * if the event is blocked (RFLAGS.IF is cleared on VM-Exit). + * If an event became pending while L2 was active, KVM needs to + * either inject the event or request an IRQ/NMI window. SMIs + * don't need to be processed as SMM is mutually exclusive with + * non-root mode. INIT/SIPI don't need to be checked as INIT + * is blocked post-VMXON, and SIPIs are ignored. + */ + if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending) + kvm_make_request(KVM_REQ_EVENT, vcpu); return; }
Process pending events on nested VM-Exit if the vCPU has an injectable IRQ or NMI, as the event may have become pending while L2 was active, i.e. may not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC through to L2 and an IRQ arrives while L2 is active, then KVM needs to request an IRQ window prior to running L1, otherwise delivery of the IRQ will be delayed until KVM happens to process events for some other reason. The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and apparently no one ever ran the test with split IRQ chips). Cc: stable@vger.kernel.org Signed-off-by: Sean Christopherson <seanjc@google.com> --- arch/x86/kvm/vmx/nested.c | 11 +++++++++++ 1 file changed, 11 insertions(+)