From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B4AD4CA5FA1 for ; Tue, 29 Sep 2026 09:36:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=+7vORc7fdZTgip4RumXbE7ra5AtBAZuP2iEiF6B3uis=; b=KQO4v4YaZSx5RVwVpi49uRLSc1 DbL5QNjnPV+fx89uO1Kb1v+a7lTANrowiyegiCPqc0yWCL240yGXClOC09LUmM0NkLdrwRh/Hn4eT FQFC67ZyuGG1rc96rQD6re93ZJvCdUHNJ3xyaobn7OnFgNmHGfKxbtR/cJGcD6QWriSgqQoztlVuC lIcA04dETYb1e+O7J5E0SGApCXKX1HB43fXF2QXR8PTtoHeE/TDxpnZyrKKvLuBegb9GBJMEvuvLt lMV6yRVghroxTy5uiZpzixbXrT4YbWIhJ6gHPj6e0weYFnLYC3yfLJH+MQidtcmw8aRYHjqiiyDO4 ZNr98Bbw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xBUGR-00000002ykV-2x0u; Tue, 29 Sep 2026 09:36:43 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xBUGP-00000002yjE-3SqV for linux-arm-kernel@lists.infradead.org; Tue, 29 Sep 2026 09:36:41 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id C97C140AE3; Tue, 29 Sep 2026 09:36:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AB4C31F00893; Tue, 29 Sep 2026 09:36:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790674600; bh=+7vORc7fdZTgip4RumXbE7ra5AtBAZuP2iEiF6B3uis=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=mfT70pSKc3gXUTp3Fk2M+S8WN47Rg3CTTMR42zP31NuBHAXdtFPYfShOJaYr1SXaT 6xYJ1CHmKrxu4FJcItJ6pI2g6sK9an89SL5FqEM/lRrM61UJhtY0Omihn4FX7mxYt+ bmHDeQpDKsmtSnDT2uTv8CK9cPgShzLY/JuZ9FUcijMh3nGAfGcdczTak/ni2mCsga vnXQx9Wcyg+o8Dv79p2FBaiQ9tjScc0N/j/ToDKuxNWt8htd0dsEgrodnK1DfNx0GN uQxj8BjHbE+rFKg1v2ntHxoZMFSARncqn4oomNnVCuYb56mr1Iovitb0qdGv7U6R0J WY+tGxnB4SS2Q== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xBUGM-0000000ElEa-2Qcq; Tue, 29 Sep 2026 09:36:38 +0000 From: Marc Zyngier To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org Cc: Steffen Eiden , Joey Gouly , Suzuki K Poulose , Oliver Upton , Zenghui Yu , Fuad Tabba , Yuchao Zhang , stable@vger.kernel.org Subject: [PATCH v2 1/7] KVM: arm64: Move OUTSIDE_GUEST_MODE publication past context being saved Date: Tue, 29 Sep 2026 10:35:42 +0100 Message-ID: <20260929093548.3598547-2-maz@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260929093548.3598547-1-maz@kernel.org> References: <20260929093548.3598547-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, seiden@linux.ibm.com, joey.gouly@arm.com, suzuki.poulose@arm.com, oupton@kernel.org, yuzenghui@huawei.com, fuad.tabba@linux.dev, ndaugoing@gmail.com, stable@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org OUTSIDE_GUEST_MODE indicates to the rest of KVM that the vcpu has exited. So far, this is set as soon as we return from the notional hypervisor (which with VHE is just a function call away). However, code that uses OUTSIDE_GUEST_MODE as a synchronisation point relies on the vcpu state to have been written back to the in-memory structures. Clearly, this is not what is happening Move the publication of OUTSIDE_GUEST_MODE to the point where the state is actually written, and give this write release semantics to ensure the correct ordering. Signed-off-by: Marc Zyngier Cc: stable@vger.kernel.org --- arch/arm64/kvm/arm.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 8b080804bc90b..5f5dd8bead4b9 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1352,7 +1352,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) ret = kvm_arm_vcpu_enter_exit(vcpu); - vcpu->mode = OUTSIDE_GUEST_MODE; vcpu->stat.exits++; /* * Back from guest @@ -1386,6 +1385,12 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) kvm_arch_vcpu_ctxsync_fp(vcpu); + /* + * All the state has been synchronised, let advertise + * we're outside of the guest. + */ + smp_store_release(&vcpu->mode, OUTSIDE_GUEST_MODE); + /* * We must ensure that any pending interrupts are taken before * we exit guest timing so that timer ticks are accounted as -- 2.47.3