From nobody Sun Jun 21 07:50:37 2026 Received: from mail-ej1-f74.google.com (mail-ej1-f74.google.com [209.85.218.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74C57344D90 for ; Fri, 24 Apr 2026 08:49:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020553; cv=none; b=ZA20R9l1GYMZq8/J+b3zNwKb8up/ACfZHG6CGr0QHxeuRx20bdfaqMTOASKjqHFlqxN5SeFjb0VO26qahBFfZqQjUd3dWtIK/YZNVkvU+ZOpvzdqIDuAg2gMYmrgjGdPPyTyCMWxYCEHr957Au3biCuMnxQWSAQSKjUysXBQx1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020553; c=relaxed/simple; bh=QWGFycIggrzer+24r8IUUQ544hu3QAGAwn5g4AM9ElU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=YmlkiQBJXiUjCyFvmrLe+D4w8kETfhtmNGfNyjQbVOF+SuaGk/xQPG310HA+Rzmp6h/+klUtflAkeACNVZRsVFaQouFF7mPPPYuimj89srg/x5sbCzyge6//T1xBDbgMG+l3uRwVJnjvxzjRBdh6IcRaCvBn152/3rUlvq5tJLw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=I83BDVEn; arc=none smtp.client-ip=209.85.218.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="I83BDVEn" Received: by mail-ej1-f74.google.com with SMTP id a640c23a62f3a-b9c0bdea9faso673462566b.2 for ; Fri, 24 Apr 2026 01:49:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777020551; x=1777625351; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=chjLWLOIpt5H2yMUpJCdXjXW1BJ6wL0l1ZmewdyTk+Q=; b=I83BDVEn6Rxm/1hfB6HdAA64YYYt7ihbJD6ISjhLmQ4BoXY2l2PTQvlMr/vOCbEH/k zdQRzCF9EnL0eoDFEVN7WMiK+JPQeQ/Yn3abXLjC3COc6JTBsnN7NdWueS8Q31rbL4/T BVoaBzZGyCM/JQbIc1sdjUcnn6/ezIRvqV2mVN9VSTBkG92Xrdm9wceWZ/6+hHI7XV9J 5bEg6Ood4FPs13htZy62zZR4L7Fgfr7e5Lv1WwxHPVetiOKnI3rOEkAl/5qVxThSF5iV MKZEFrc/oMPTeT8coXBWCKWvnEh5Ax/RAgGr/rhLoKv4zmGEQiGLvxZ0ZQRcD7xzFJI2 cGHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777020551; x=1777625351; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=chjLWLOIpt5H2yMUpJCdXjXW1BJ6wL0l1ZmewdyTk+Q=; b=jyYNZxd+tYMPuwhBJ5VWNgamjJeY+mI6MLb5pS1du0qz0PrdcxYuUid+m65is55EXj Iq7n+7kl6+bopQNo/uvobKrxHE8WEaj+Lmkct4zUnLexA/9go21cyaK6EQOfDPV5oB5q AGZ7urLz1j7GIhsssesr7Xc+w3Yz4d9Om1pFpgIZtfQSv8gt1GEBN329i2g2JqfE9dBu E8q9M8d8t00jbP6/qyoUaao9t1UgehvaV3eQb1fyzs9l6GIxD8o/3A95fGcyh4zRClRN lqisFBYs7P7KinS/pcDs/e8W8e/84Se1IJ/YkxJY5IPsjZ+QqhS8FmIlhTLOQTPZuUiR DUBA== X-Forwarded-Encrypted: i=1; AFNElJ95JfJOrK/68X0KZA5Jr/znDUB69gHSBf+8ctyHp54/vbOANLJSfq3KFs+JnIdJ8HAB6abCSX8nx/iEmig=@vger.kernel.org X-Gm-Message-State: AOJu0Yyn83FqkcttHZZjuOodsXegBfOAm7ZGxSjcPqV/ho8Flh7XbrGD TOTiueTAMmDIQoPiKWk8PTsqupsXj4TSLciEft5Qxmdb8t0JojQvg8+DHm7yXuWqy/IGCetPxH4 owQ== X-Received: from ejbwt10.prod.google.com ([2002:a17:906:ee8a:b0:b9b:9f09:c27e]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a17:907:cd09:b0:b9e:f58:c581 with SMTP id a640c23a62f3a-ba41b3dff09mr1835202166b.45.1777020550736; Fri, 24 Apr 2026 01:49:10 -0700 (PDT) Date: Fri, 24 Apr 2026 09:49:03 +0100 In-Reply-To: <20260424084908.370776-1-tabba@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260424084908.370776-1-tabba@google.com> X-Mailer: git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog Message-ID: <20260424084908.370776-2-tabba@google.com> Subject: [PATCH 1/6] KVM: arm64: Fix FEAT_Debugv8p9 to check DebugVer, not PMUVer From: Fuad Tabba To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tabba@google.com, catalin.marinas@arm.com, will@kernel.org, maz@kernel.org, oupton@kernel.org, qperret@google.com, suzuki.poulose@arm.com, joey.gouly@arm.com, yuzenghui@huawei.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" FEAT_Debugv8p9 is incorrectly defined against ID_AA64DFR0_EL1.PMUVer instead of ID_AA64DFR0_EL1.DebugVer. All three consumers of the macro gate features that are architecturally tied to FEAT_Debugv8p9 (DebugVer =3D 0b1011, DDI0487 M.b A2.2.10): - HDFGRTR2_EL2.nMDSELR_EL1, HDFGWTR2_EL2.nMDSELR_EL1: MDSELR_EL1 is present only when FEAT_Debugv8p9 is implemented (D24.3.21). - MDCR_EL2.EBWE: the Extended Breakpoint and Watchpoint Enable bit is RES0 unless FEAT_Debugv8p9 is implemented (D24.3.17). Neither register has any dependency on PMUVer. FEAT_Debugv8p9 and FEAT_PMUv3p9 are independent. Per DDI0487 M.b A2.2.10, FEAT_Debugv8p9 is unconditionally mandatory from Armv8.9, whereas FEAT_PMUv3p9 is mandatory only when FEAT_PMUv3 is implemented. An Armv8.9 CPU without a PMU has DebugVer =3D 0b1011 but PMUVer =3D 0b0000, so the wrong field check would cause KVM to incorrectly treat EBWE and MDSELR_EL1 as RES0 on such hardware. Fixes: 4bc0fe089840 ("KVM: arm64: Add sanitisation for FEAT_FGT2 registers") Signed-off-by: Fuad Tabba --- arch/arm64/kvm/config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c index f35b8dddd7c1..093290b366e6 100644 --- a/arch/arm64/kvm/config.c +++ b/arch/arm64/kvm/config.c @@ -192,7 +192,7 @@ struct reg_feat_map_desc { #define FEAT_SRMASK ID_AA64MMFR4_EL1, SRMASK, IMP #define FEAT_PoPS ID_AA64MMFR4_EL1, PoPS, IMP #define FEAT_PFAR ID_AA64PFR1_EL1, PFAR, IMP -#define FEAT_Debugv8p9 ID_AA64DFR0_EL1, PMUVer, V3P9 +#define FEAT_Debugv8p9 ID_AA64DFR0_EL1, DebugVer, V8P9 #define FEAT_PMUv3_SS ID_AA64DFR0_EL1, PMSS, IMP #define FEAT_SEBEP ID_AA64DFR0_EL1, SEBEP, IMP #define FEAT_EBEP ID_AA64DFR1_EL1, EBEP, IMP --=20 2.54.0.rc2.544.gc7ae2d5bb8-goog From nobody Sun Jun 21 07:50:37 2026 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8598B352FAF for ; Fri, 24 Apr 2026 08:49:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020555; cv=none; b=krixANh4BiA7PesHd4Jg0zaEf4/wfjJgPEzg15O7ujq8jYrpXKGuQ0BGRVr6sbqOMZWn0QRSC6CY1xetUkIFR1vVJWzGgz8pV+smzLh3U9pKdVYa075gHoRR6uU8gJXB8cksmVF4Lz3LtQSooetnUzEAaCuvadbAQnF1O1+GwPY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020555; c=relaxed/simple; bh=1lCa0fGJkv3iZRPlrHk4ryZeg4c15YmUkb8vMfqEOL4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=KtHVbOdkrqhyuXnFd4MHv1M92hB21b8CXOkwI/ZUn/inDLR2tOFvE4QOyagA/FCVukZuIGUc6vhOPXUNX617S51r0brBD7mR6Hg6jsmaE4TTJq3Rk4/cDK77JpOxVM2gZ/KJ7eDBkD2W248RXeLUg1Lo4HQKQ5JhdkAElYid5FQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=BwcwQ/Oi; arc=none smtp.client-ip=209.85.128.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="BwcwQ/Oi" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-48a55ecc32cso34342315e9.1 for ; Fri, 24 Apr 2026 01:49:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777020552; x=1777625352; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=XShP+UFGcHA8+NRAMytT9G1kOFOShWj4IGMrrTJlFSk=; b=BwcwQ/OilfVCC/FJfG+aYkSK3QEfDVQueZHhyemupuhejPR6Os9cTlntklP5MrGVtp YwBC/I7S30H0aMvMgF/1qWhYne0IHMi32FAkYKRwiGEzdf+uQiFnhfQ0OwVeHNhWrQCd pDgXVJ9HwBqNpszt6WCcc1uQHsp4Uems7Zz9ISXRa5P4fSHYvl1z3FM0W3oK3guYcin5 V3daVnNu8PotUaZTESGYtfkxqoA5xaVmuZ+qLmo0UujolzWtLR9s8d9xmkf+hRHJqse8 oGNZ44lfGuJ8Edc5lkMBC8Qg70QFjVqIKtpRCMI9dsoelLLxJp4/2gfUlsiWtYdEYkqr eDvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777020552; x=1777625352; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XShP+UFGcHA8+NRAMytT9G1kOFOShWj4IGMrrTJlFSk=; b=UyPyqklGT2I+u5Xq5z7MrmtKPvNGRI5LsjHZXrinpVoSlrI90y30CvUlFdurILTt2b Qy7pxvFsL6EdkCZbWZ8uKF9u6Uhb4FdorjzzS4GfdQnxIAHedr40Ur7mTZFW+y3WM98t 3DUOK7zqSw/ofJett+bJh7uX9jQRAC80qyFlv3WNB8zUyvEM+T5MNs/pIqUXL/Gzf2Uy UzO1+zCOIKmNX2Ljd0T6HPj41NDIE0YtYL/pZyTrgksqqFYk4rZsnY59twjm+2Y+MnHt vFZ71bsgT9PwlkC629f+i4Zad3xvnfTdozmTDzHlK+atIlZQZa2B3HqrG11NAvdvSegJ 6wBw== X-Forwarded-Encrypted: i=1; AFNElJ9irpjqAMukOsE4LetPQdDO0BEcUYb+RLmDwmmOM8DvVeflGuUb95dYbWShQ2rEPuQZatxpXcdCI1UL1zU=@vger.kernel.org X-Gm-Message-State: AOJu0YzY9XCjPnYNosqlUCnMFgbqOu68k4Te/KCvKVmouwU5/YT60BSN 7KBLa7KWG9hOPZiS1zZxM3aI0GdIDEm0Vw+RZVRqHvGFLXk1GIdjHOTMCqSZaPWNzoYUxN8yJ6b Sag== X-Received: from wmjf15.prod.google.com ([2002:a7b:cd0f:0:b0:485:37cb:adc1]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600d:8447:b0:489:1ff5:edda with SMTP id 5b1f17b1804b1-4891ff5efe1mr218011645e9.6.1777020551865; Fri, 24 Apr 2026 01:49:11 -0700 (PDT) Date: Fri, 24 Apr 2026 09:49:04 +0100 In-Reply-To: <20260424084908.370776-1-tabba@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260424084908.370776-1-tabba@google.com> X-Mailer: git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog Message-ID: <20260424084908.370776-3-tabba@google.com> Subject: [PATCH 2/6] KVM: arm64: Fix typo in feature check comments From: Fuad Tabba To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tabba@google.com, catalin.marinas@arm.com, will@kernel.org, maz@kernel.org, oupton@kernel.org, qperret@google.com, suzuki.poulose@arm.com, joey.gouly@arm.com, yuzenghui@huawei.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Revists -> Revisit. The following patch will add another similar line. No functional change intended. Signed-off-by: Fuad Tabba --- arch/arm64/kvm/config.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c index 093290b366e6..a722ea178f68 100644 --- a/arch/arm64/kvm/config.c +++ b/arch/arm64/kvm/config.c @@ -283,7 +283,7 @@ static bool feat_anerr(struct kvm *kvm) static bool feat_sme_smps(struct kvm *kvm) { /* - * Revists this if KVM ever supports SME -- this really should + * Revisit this if KVM ever supports SME -- this really should * look at the guest's view of SMIDR_EL1. Funnily enough, this * is not captured in the JSON file, but only as a note in the * ARM ARM. @@ -295,7 +295,7 @@ static bool feat_sme_smps(struct kvm *kvm) static bool feat_spe_fds(struct kvm *kvm) { /* - * Revists this if KVM ever supports SPE -- this really should + * Revisit this if KVM ever supports SPE -- this really should * look at the guest's view of PMSIDR_EL1. */ return (kvm_has_feat(kvm, FEAT_SPEv1p4) && @@ -305,7 +305,7 @@ static bool feat_spe_fds(struct kvm *kvm) static bool feat_trbe_mpam(struct kvm *kvm) { /* - * Revists this if KVM ever supports both MPAM and TRBE -- + * Revisit this if KVM ever supports both MPAM and TRBE -- * this really should look at the guest's view of TRBIDR_EL1. */ return (kvm_has_feat(kvm, FEAT_TRBE) && --=20 2.54.0.rc2.544.gc7ae2d5bb8-goog From nobody Sun Jun 21 07:50:37 2026 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81D03344DA0 for ; Fri, 24 Apr 2026 08:49:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020556; cv=none; b=AyFofbSUCE8+pYGxIdM2sh61eDT2I7eOTwhnlImpIqpx353W2nYqsMkpPBeo7lzjQn8hXE6bRiDY1A/2r5xO8lNN5ItDHDfk7i9I04nRCs4oDcURWbnWK+NN8bIOgaxXeJdCxp0QnM89t+hjlkLQnGfy3pPOVWqD+bZei4XlouE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020556; c=relaxed/simple; bh=nELHylJPezncARiAi8KKGYsmhL2qaAXiYMmMmo3Zi9c=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=HEgIUi/NxsEqfbFzJNY3WFjKxW8rlEc++HMlpjHBrKeBA9qCeSaWqiT1umc1yNpPN714GxUiBzNRPFK3sBjIj3t7h61ZdOlV87lW0oRtRft9HnC3aITRut8jnbtxEt0xwcGsb3xGfytKOYrGeoARqV6FgYU0yzdjDtu8cr/Fu3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=VrdvqxYz; arc=none smtp.client-ip=209.85.221.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="VrdvqxYz" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-43e52dc8a04so6640395f8f.3 for ; Fri, 24 Apr 2026 01:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777020553; x=1777625353; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=75xbgkgj9TP8McSEuAQtz161daMjjx48XqQqIGgEMWU=; b=VrdvqxYzf5joSvtVoKm/ilbRNIegPZkT6bb5JNpVyJ06A4LDwjEdJE4K5fZgZ63Ccs fRvKg9tVhqFDLO5Ql+HDTdNcMmsWZliZndKb2CC50fjA9dy/NZeOovhzJHluO+5bcdjT Otjm+uFdWgUrBodO8ldI5J/c5gMYHrrjVJlgtTUoqeft319t3umctJ8OM2/a+W9AgGh4 HnVxpdL//KzjEdYhg7L+2AGSoELdtuITLbFMnZyuGBuZiIUYwvgB5SZp7Jmdb5kJ8txC HLTcMQISnQBd0ljKQBpYg5kCOcwcEre8OaNDIqH3PnqSCsqVwai2vU5KuUl3Wwq+1eCD FteA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777020553; x=1777625353; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=75xbgkgj9TP8McSEuAQtz161daMjjx48XqQqIGgEMWU=; b=UQEmP3RhOLDymBk+6mJxXR0Pci0aNY54Na57v7wv6SYHfyzxHc45YjF2idIBjfq5Ai k4RzFSHftcYxXjGIDISKRBxPEevD7yHPCcm/nuqOPFFZI2AxcH+qb4FCY9qKWrbd/Efe bJhpVKrfAj+6XYxCoiD8jhryc2FzT+pfowZcXKWOUycgVvXxHCFKvipnwbjpMmITJtC2 rR6/9m6uIGre1vFS16ZNzIYaPiysazx7Eif4BLvnRQbXv3/1EG9zA4ajR3TfzUx2C6tY OoRaQLDsAotvnpro6lI44a6sYjgH7Ya+Cj+4KqvyVeJnV0GDEx/422/bLXbu+hQsGvXN lnXA== X-Forwarded-Encrypted: i=1; AFNElJ/mn52cDBdZmaJVJCMB2aWEr1NfNOvsbmx6axHG3PhpLpBbAr5rKSmKebdbl3zPhvw2Ba/glXK65jwzlMw=@vger.kernel.org X-Gm-Message-State: AOJu0YzbvxjvWMn22MK1KQrYGm9xr6ODCgWEtAB687065BxaHABSWanA 65gWPz8RjCbRO/aKKE52jiK+Xi30GBCtidJj9pGuhQ1+YP0mdcg6rhVPTLYp95LdGeJqRI2gPJw 8JQ== X-Received: from wrpx14.prod.google.com ([2002:adf:f64e:0:b0:43d:7088:5f55]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:2f83:b0:43d:7d6f:f529 with SMTP id ffacd0b85a97d-43fe3e0dc49mr47722399f8f.31.1777020552885; Fri, 24 Apr 2026 01:49:12 -0700 (PDT) Date: Fri, 24 Apr 2026 09:49:05 +0100 In-Reply-To: <20260424084908.370776-1-tabba@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260424084908.370776-1-tabba@google.com> X-Mailer: git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog Message-ID: <20260424084908.370776-4-tabba@google.com> Subject: [PATCH 3/6] KVM: arm64: Fix FEAT_SPE_FnE to use PMSIDR_EL1.FnE, not PMSVer From: Fuad Tabba To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tabba@google.com, catalin.marinas@arm.com, will@kernel.org, maz@kernel.org, oupton@kernel.org, qperret@google.com, suzuki.poulose@arm.com, joey.gouly@arm.com, yuzenghui@huawei.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" FEAT_SPE_FnE is architecturally detected via PMSIDR_EL1.FnE [6], not ID_AA64DFR0_EL1.PMSVer. The FEAT_X macro form (register, field, value) cannot encode a PMSIDR_EL1-based feature, so FEAT_SPE_FnE was defined identically to FEAT_SPEv1p2 (ID_AA64DFR0_EL1, PMSVer, V1P2), producing a duplicate that used PMSVer >=3D V1P2 as a proxy. Replace the macro with feat_spe_fne(), following the same pattern as the sibling feat_spe_fds(): guard on FEAT_SPEv1p2 and read PMSIDR_EL1.FnE [6] directly. Wire the two NEEDS_FEAT consumers to use the new function. Remove the now-unused FEAT_SPE_FnE macro. Fixes: 63d423a7635b ("KVM: arm64: Switch to table-driven FGU configuration") Signed-off-by: Fuad Tabba --- arch/arm64/kvm/config.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c index a722ea178f68..0622162b089e 100644 --- a/arch/arm64/kvm/config.c +++ b/arch/arm64/kvm/config.c @@ -131,7 +131,6 @@ struct reg_feat_map_desc { } =20 #define FEAT_SPE ID_AA64DFR0_EL1, PMSVer, IMP -#define FEAT_SPE_FnE ID_AA64DFR0_EL1, PMSVer, V1P2 #define FEAT_BRBE ID_AA64DFR0_EL1, BRBE, IMP #define FEAT_TRC_SR ID_AA64DFR0_EL1, TraceVer, IMP #define FEAT_PMUv3 ID_AA64DFR0_EL1, PMUVer, IMP @@ -302,6 +301,16 @@ static bool feat_spe_fds(struct kvm *kvm) (read_sysreg_s(SYS_PMSIDR_EL1) & PMSIDR_EL1_FDS)); } =20 +static bool feat_spe_fne(struct kvm *kvm) +{ + /* + * Revisit this if KVM ever supports SPE -- this really should + * look at the guest's view of PMSIDR_EL1. + */ + return (kvm_has_feat(kvm, FEAT_SPEv1p2) && + (read_sysreg_s(SYS_PMSIDR_EL1) & PMSIDR_EL1_FnE)); +} + static bool feat_trbe_mpam(struct kvm *kvm) { /* @@ -537,7 +546,7 @@ static const struct reg_bits_to_feat_map hdfgrtr_feat_m= ap[] =3D { HDFGRTR_EL2_PMBPTR_EL1 | HDFGRTR_EL2_PMBLIMITR_EL1, FEAT_SPE), - NEEDS_FEAT(HDFGRTR_EL2_nPMSNEVFR_EL1, FEAT_SPE_FnE), + NEEDS_FEAT(HDFGRTR_EL2_nPMSNEVFR_EL1, feat_spe_fne), NEEDS_FEAT(HDFGRTR_EL2_nBRBDATA | HDFGRTR_EL2_nBRBCTL | HDFGRTR_EL2_nBRBIDR, @@ -605,7 +614,7 @@ static const struct reg_bits_to_feat_map hdfgwtr_feat_m= ap[] =3D { HDFGWTR_EL2_PMBPTR_EL1 | HDFGWTR_EL2_PMBLIMITR_EL1, FEAT_SPE), - NEEDS_FEAT(HDFGWTR_EL2_nPMSNEVFR_EL1, FEAT_SPE_FnE), + NEEDS_FEAT(HDFGWTR_EL2_nPMSNEVFR_EL1, feat_spe_fne), NEEDS_FEAT(HDFGWTR_EL2_nBRBDATA | HDFGWTR_EL2_nBRBCTL, FEAT_BRBE), --=20 2.54.0.rc2.544.gc7ae2d5bb8-goog From nobody Sun Jun 21 07:50:37 2026 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 793E335B63B for ; Fri, 24 Apr 2026 08:49:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020562; cv=none; b=GICx2h36hQQkqJlBXUw4+pPOQI9zaITm81T1H90b+XemBQnHfhNs42zcFJj37vj/aWOC4Z+s08ahEUZKgxljO53ZFB486T7TGT/z1z4LnIsqJb56xhWeo9W5RygFoCYBVMz2XlPwz7L5C2lQM/h7//gWe5cu0sVA6jtg5Er7DPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020562; c=relaxed/simple; bh=D6qZfKldpwjM+c/fUFYWGD6EGtCzM/BfOJ+cjy+IZ9U=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=WvLw/hT7Do1ZkK940QAZLHjhLtY5yxNVcOtZuLGfvDp3q7aVAmUDKbh/Q8Z5OVPxwZ7QCF52laQvwZDrBGLuztEn+MUEqBrK7n9qMG1pv2Ku/9yl9XfQaUOpDmpiRFoqjWTmWD9bu5jInpB1vlCtIraLwl7ZEYMwVsMaSjz+ykM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=YXnrSPoP; arc=none smtp.client-ip=209.85.128.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="YXnrSPoP" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-4837bfcfe0dso82748775e9.1 for ; Fri, 24 Apr 2026 01:49:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777020554; x=1777625354; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=YJY1gPOgAaLT6+Kz2+e0ENJlulAl4LJwepN5ROf8PcQ=; b=YXnrSPoPKRGPrk9eaW7X0kcgf3AV7396+JzQDyhNRuLKzQepkNyeHX0h6cwZTbwRs1 NpeGGjkvY2dR/sGv7u2T293sfQ+ioeCpooKm5H6TyDI0Rt/lvyRhMcqxBn2uivHW8/2f mQStaNQaNVdC7o7u+Vd83US1ufrgGwqZmMVuOtCL0zGbTm529TRSCb6ZJ62Yabqg6ift SiTKzYLzEp7VcSKrQiEAm6EcT7TIzJckesj8mqTOcOacfzt5ZFro+sh7pNBV54s5FCII EoOi8NrcHbhPNtzGbJHfcRneBErhZrKQn3p98jiAB2Tm5fmsvU8RiFLDVWozikg8M7nt iG9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777020554; x=1777625354; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YJY1gPOgAaLT6+Kz2+e0ENJlulAl4LJwepN5ROf8PcQ=; b=TuGPVmIvMHxZ1K+35Md1Z5YI3YF2QLLVEerU0XSxep/rqH1HZclsNOCmnMCyFKpQuh MNxX216OfrEp17Vp+oazT2cV8rM0gn31qnH89zO7iEbVVGFiYNg3EeGkwiaYYSP8mYHY f4GAAZCQnF6guf/2r5fDNhx8VO7s0fEyUX/JhweToModUdCFx2N442OZNL3sCrfO3rpm dCgvqibmidxCsSdwbvbMfnjXjza6ee+LlWQt7RTGUNDGw4DDdHRE6RMyjI9x6zYVsgrW ZrnLFm0FNJGd/hE0bNdSUsdR/UuGxidv02zVOaprhS9plM65mqrk5LDjX4l7352BqCRh TeKw== X-Forwarded-Encrypted: i=1; AFNElJ97FOXEJbU3/H9MnJT+8GzImeYZnFbVY+N8osQbAuh3yC1qvRQ7xDY9zpwf0cx9IC6V55dmSoLgN307bS0=@vger.kernel.org X-Gm-Message-State: AOJu0Yya4kZ7LnU6cpI4yRO5OhEter68CpjO7gYbewQ3HOKImH4s0e9y ox/W0uY1SJHOim0deIgImadXb6QWsofUpFvs0o3dNy3SVEEUlBmBIU5Ey+y9BODBePdEy7Cuyx1 UEg== X-Received: from wmpz12.prod.google.com ([2002:a05:600c:a0c:b0:488:ab5f:9e9e]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:19cf:b0:48a:66a8:9981 with SMTP id 5b1f17b1804b1-48a66a89b9dmr10997185e9.27.1777020553789; Fri, 24 Apr 2026 01:49:13 -0700 (PDT) Date: Fri, 24 Apr 2026 09:49:06 +0100 In-Reply-To: <20260424084908.370776-1-tabba@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260424084908.370776-1-tabba@google.com> X-Mailer: git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog Message-ID: <20260424084908.370776-5-tabba@google.com> Subject: [PATCH 4/6] KVM: arm64: Fix kvm_vcpu_initialized() macro parameter From: Fuad Tabba To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tabba@google.com, catalin.marinas@arm.com, will@kernel.org, maz@kernel.org, oupton@kernel.org, qperret@google.com, suzuki.poulose@arm.com, joey.gouly@arm.com, yuzenghui@huawei.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The macro is defined with parameter 'v' but the body references the literal token 'vcpu' instead, causing it to silently operate on whatever 'vcpu' resolves to in the caller's scope rather than the value passed by the caller. All current call sites happen to use a variable named 'vcpu', so the bug is latent. Fixes: e016333745c7 ("KVM: arm64: Only reset vCPU-scoped feature ID regs on= ce") Signed-off-by: Fuad Tabba --- arch/arm64/include/asm/kvm_host.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm= _host.h index 851f6171751c..0e5dbc1c5879 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -1548,7 +1548,7 @@ static inline bool __vcpu_has_feature(const struct kv= m_arch *ka, int feature) #define kvm_vcpu_has_feature(k, f) __vcpu_has_feature(&(k)->arch, (f)) #define vcpu_has_feature(v, f) __vcpu_has_feature(&(v)->kvm->arch, (f)) =20 -#define kvm_vcpu_initialized(v) vcpu_get_flag(vcpu, VCPU_INITIALIZED) +#define kvm_vcpu_initialized(v) vcpu_get_flag(v, VCPU_INITIALIZED) =20 int kvm_trng_call(struct kvm_vcpu *vcpu); #ifdef CONFIG_KVM --=20 2.54.0.rc2.544.gc7ae2d5bb8-goog From nobody Sun Jun 21 07:50:37 2026 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 361ED3659F6 for ; Fri, 24 Apr 2026 08:49:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020562; cv=none; b=bVRakcGvwa21eo94Yhu2gnNr2u+/ywpn5dpsEG8SsmHM+XWy8/v8ixyhUf8Q5+77tgJARhPYQZiKKl4djW91kT233jdZIqKrSc4EAVR2SzUT1SC6qT+eRIQw6FajmXvY+3c9UYwe+6SxExfpwTD7wFuSusKEpCxXiOwc+ffGruU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020562; c=relaxed/simple; bh=BZlWZl/8o8OWASVcp9+fdkbKr43zVFREwf1BJ/L7wFs=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=LgLJf0ZraUTOJrD1AcYiu5mnDSMV1+xunvJMj5tRPR6ue7UK4IaSrw2x6AIQn+gXRaPXWQkpr4ppNBzwQNLiYgzQY3DB3whFEKtr35azk8COmg5+jYbeUZUWnhLsKxwuF6+iHZ3UYG+DF576fncBZF0i4pht824Uxq6jjB4+ZDo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=BXM/X0/b; arc=none smtp.client-ip=209.85.128.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="BXM/X0/b" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-48a55ecc249so29617965e9.1 for ; Fri, 24 Apr 2026 01:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777020555; x=1777625355; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=YXnZx3UxHBTbHH5XMnk/ieS8KZZEW34YA9EEjoorokI=; b=BXM/X0/bM8/Hyn1ziCN21mqocwu7/+YPvRLeaN1Op5m2cc1DvcUEn7nO8ukHN13mQI 2J77zogIBJeW+aV5sxH7R7Z8Xit1xpynMsab4ApJlBXXXeHA6R0hLi1+CEcZLkYxxsyy kSv4jwdyPJfCt0ZW0LcWj8O4JyehVHtd0ykp7WrCfkXobw1WNzu0OdAUimtpl8QYdmDy EZXFh8lg54xmsx+mhiZsc59GvmlAeNJqQt0YbZVP6OBrsHVLZMCLVTHStrDjG1tJXjUK okSw/GwlalURQAmkDxGE2fgLIbUhlcRcatUbvXKcR3eVq/XlGM2pnpSVVtmEtdFdGc/S Ebtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777020555; x=1777625355; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YXnZx3UxHBTbHH5XMnk/ieS8KZZEW34YA9EEjoorokI=; b=JG0qJVV+93hoUJQofF7eJsJlSdKdLkJREVrAnHFPei7HEbKkJamyQ9CGNcf89i9e/6 S9zr008hchd2Ml5zHDHRApkA3tpzysrkv8BjIpGjZ3r7+O202mCHzWmHy+C92bcKccbM H9BGThxgHfEGSrCNYLmtqtQR43UMYsvqtgWi9I0Bf2Wde7fSpsH9+EswXQKIlWdOieP0 0zkibWtLjSIE/yS00yHGyX1GJCqf1NGwstpBDXQi4xQEdVwnfyZJJ0PtH91CHmKk0Ojm UckHxvzNCHt/BoFX2uXGN3rHiDodo3AsRqzbEPqxcKiIuQoiciAvOxJM56KB7FvtfIe1 WJFQ== X-Forwarded-Encrypted: i=1; AFNElJ8abAbmq48/f5TByFbYKBiw/VFyNt7jQUmviQ6xAkOw9DoHy17qAxxWzI3EgQvAjtKHp0/3m+UURwU2upQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzDItjCi2kPIJ5fyeLKdRaBnyYmQgMJJKtDu+r4zzXhR0AUgI8V EFApYMnnVJJdKswBsNFzKhdGGht8ooVOm6m0rbSwOyiDpIw0MlDPRrqbS6oYwRWJnHLh+9QZRhq KKQ== X-Received: from wmmu12.prod.google.com ([2002:a05:600c:cc:b0:489:1d25:1a63]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:c177:b0:486:fb0b:ad79 with SMTP id 5b1f17b1804b1-488fb78129emr400550495e9.20.1777020554656; Fri, 24 Apr 2026 01:49:14 -0700 (PDT) Date: Fri, 24 Apr 2026 09:49:07 +0100 In-Reply-To: <20260424084908.370776-1-tabba@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260424084908.370776-1-tabba@google.com> X-Mailer: git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog Message-ID: <20260424084908.370776-6-tabba@google.com> Subject: [PATCH 5/6] KVM: arm64: Fix pin leak and publication ordering in __pkvm_init_vcpu() From: Fuad Tabba To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tabba@google.com, catalin.marinas@arm.com, will@kernel.org, maz@kernel.org, oupton@kernel.org, qperret@google.com, suzuki.poulose@arm.com, joey.gouly@arm.com, yuzenghui@huawei.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Two bugs exist in the vCPU initialisation path: 1. If a check fails after hyp_pin_shared_mem() succeeds, the cleanup path jumps to 'unlock' without calling unpin_host_vcpu() or unpin_host_sve_state(), permanently leaking pin references on the host vCPU and SVE state pages. Extract a register_hyp_vcpu() helper that performs the checks and the store. When register_hyp_vcpu() returns an error, call unpin_host_vcpu() and unpin_host_sve_state() inline before falling through to the existing 'unlock' label. 2. register_hyp_vcpu() publishes the new vCPU pointer into 'hyp_vm->vcpus[]' with a bare store, allowing a concurrent caller of pkvm_load_hyp_vcpu() to observe a partially initialised vCPU object. Ensure the store uses smp_store_release() and the load uses smp_load_acquire(). While 'vm_table_lock' currently serialises the store and the load, these barriers ensure the reader sees the fully initialised 'hyp_vcpu' object even if there were a lockless path or if the lock's own ordering guarantees were insufficient for nested object initialization. Fixes: 49af6ddb8e5c ("KVM: arm64: Add infrastructure to create and track pK= VM instances at EL2") Reported-by: Ben Simner Co-developed-by: Will Deacon Signed-off-by: Will Deacon Signed-off-by: Fuad Tabba --- arch/arm64/kvm/hyp/nvhe/pkvm.c | 38 ++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c index 7ed96d64d611..e7496eb85628 100644 --- a/arch/arm64/kvm/hyp/nvhe/pkvm.c +++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c @@ -266,7 +266,8 @@ struct pkvm_hyp_vcpu *pkvm_load_hyp_vcpu(pkvm_handle_t = handle, if (hyp_vm->kvm.created_vcpus <=3D vcpu_idx) goto unlock; =20 - hyp_vcpu =3D hyp_vm->vcpus[vcpu_idx]; + /* Pairs with smp_store_release() in register_hyp_vcpu(). */ + hyp_vcpu =3D smp_load_acquire(&hyp_vm->vcpus[vcpu_idx]); if (!hyp_vcpu) goto unlock; =20 @@ -860,12 +861,30 @@ int __pkvm_init_vm(struct kvm *host_kvm, unsigned lon= g vm_hva, * the page-aligned size of 'struct pkvm_hyp_vcpu'. * Return 0 on success, negative error code on failure. */ +static int register_hyp_vcpu(struct pkvm_hyp_vm *hyp_vm, + struct pkvm_hyp_vcpu *hyp_vcpu) +{ + unsigned int idx =3D hyp_vcpu->vcpu.vcpu_idx; + + if (idx >=3D hyp_vm->kvm.created_vcpus) + return -EINVAL; + + if (hyp_vm->vcpus[idx]) + return -EINVAL; + + /* + * Ensure the hyp_vcpu is initialised before publishing it to + * the vCPU-load path via 'hyp_vm->vcpus[]'. + */ + smp_store_release(&hyp_vm->vcpus[idx], hyp_vcpu); + return 0; +} + int __pkvm_init_vcpu(pkvm_handle_t handle, struct kvm_vcpu *host_vcpu, unsigned long vcpu_hva) { struct pkvm_hyp_vcpu *hyp_vcpu; struct pkvm_hyp_vm *hyp_vm; - unsigned int idx; int ret; =20 hyp_vcpu =3D map_donated_memory(vcpu_hva, sizeof(*hyp_vcpu)); @@ -884,18 +903,11 @@ int __pkvm_init_vcpu(pkvm_handle_t handle, struct kvm= _vcpu *host_vcpu, if (ret) goto unlock; =20 - idx =3D hyp_vcpu->vcpu.vcpu_idx; - if (idx >=3D hyp_vm->kvm.created_vcpus) { - ret =3D -EINVAL; - goto unlock; + ret =3D register_hyp_vcpu(hyp_vm, hyp_vcpu); + if (ret) { + unpin_host_vcpu(host_vcpu); + unpin_host_sve_state(hyp_vcpu); } - - if (hyp_vm->vcpus[idx]) { - ret =3D -EINVAL; - goto unlock; - } - - hyp_vm->vcpus[idx] =3D hyp_vcpu; unlock: hyp_spin_unlock(&vm_table_lock); =20 --=20 2.54.0.rc2.544.gc7ae2d5bb8-goog From nobody Sun Jun 21 07:50:37 2026 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43F3037E2ED for ; Fri, 24 Apr 2026 08:49:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020561; cv=none; b=ZUCOmPxXCxPI+E5KPIPcPOKpZ9x9v9yOo9Nza4cDkGNyPlJCd2JBc5C42mtw0cnBX4UAXuA2j4ihADDL6kIVvrlXvDBuq/rQWo/9kS4LefRTcH2oywdUd6pYWHp+23wdeTZDNTjw+G6TgJFpvATDr5dr+0zN0nw6CUvhypcWGXE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777020561; c=relaxed/simple; bh=Z/tTC496ywitVhvJ/ad7HqkXUo6IunUgRhcenzo55AU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=bpskUr26N+6vNqo7FMjm2IITC/ucuh8K0s6YJtn3CNu7XXsuP/RovGeX0BBTvwlOhcbx9D1O77KdwlPzSQLuZhbqPZVX4jCtYojmXxWXRdYxGzZC9zPVsj5wPFzIswrNS4t9frvYrc/owokjSuOFub3AF0DAdFrFtwWmzS5IYMI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=luBy/Wxs; arc=none smtp.client-ip=209.85.221.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tabba.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="luBy/Wxs" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-441243ba35fso3073804f8f.0 for ; Fri, 24 Apr 2026 01:49:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777020556; x=1777625356; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=tqPUzeIZ3aoS8p3NlrhVF5/x2KSp4t36eDNrPTZ/mqs=; b=luBy/WxsU7kH2VBWKU+u30hQ/mEtrFgmVo5Z0ouPbCaaBBWuP9alQdyR1nceUfLrTt VNd4dOO7NGNtn50UowKsEcJbCbChDFrs8ntMXOFfRAefsOz39MYqA221XrJhiMo0x8ZF +sMZR9TtlgbTZ6b1njtq0iyaw2gHQqxl7Rq1pCO1xFUuDccpUKXu6qRrtRrj4NiIiwmx j4+KWublenCDxhsPTnmUYIBIw48ZaqZcxi248HQ2okuwp/+GwiYebgW1IQRJcVaYCAih zc32CT8K5kqvFvZgZKvU3Rbo69awQzg0QZY9RI5Jp+ttJd0BFvDA0LniGjH7AJlrqhKm yPMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777020556; x=1777625356; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tqPUzeIZ3aoS8p3NlrhVF5/x2KSp4t36eDNrPTZ/mqs=; b=PcFeOYes/PU1zVOZZJglWxBfe88rZTQHbourvniMyOjrlUn3WTsf/0Prkurb/Hjy41 BjqEiLRPiDmd5gKaRjG/tG3zdrfVoM6aM5WgxMo7Nm1vwqWdSvPMES7gjXr+3r27Ore9 uPSBuQL+elm5pklStEx8LXv5NyhiPvUPTvWo2Ynz00r+NohnkCLZ5Nk0ve+WS5TUg92f N5kaVjx9lmwnpKolNNW7O96LIV52P0wf5qNfcXRFFKHQImWyOiGdQEEpxJ3oh5H2OXLH qg8GcyapG7OEvCfEPRDVZwhtemNM9b1lIL7ENo0SmjOXA+pLtNQaZ7efUUZBc49aA99l 8WCQ== X-Forwarded-Encrypted: i=1; AFNElJ/3ipeNzilbv+NxEnnO5je/wA5Lot1AyEvGeJ1HaLn1PhNI/aVG+zSY3D4csqWdmJ1Tn1F6ml+9mgNk/54=@vger.kernel.org X-Gm-Message-State: AOJu0YzqQU6F8uhzSVfrIzI82hW/LiJ5hdGA66KFY2fdX7jQGy0TZ6Yd 10gqvNgFsVk5M70H0FtkB4aR2RJ9GAFXRcRwwkXL0qDX2MSrVVkQMyXtF4h09caVD0urYhZEdWE f3Q== X-Received: from wma12.prod.google.com ([2002:a05:600c:890c:b0:485:40d2:1ebf]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:c090:b0:488:c744:49b with SMTP id 5b1f17b1804b1-488fb74a53dmr326821365e9.7.1777020555512; Fri, 24 Apr 2026 01:49:15 -0700 (PDT) Date: Fri, 24 Apr 2026 09:49:08 +0100 In-Reply-To: <20260424084908.370776-1-tabba@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260424084908.370776-1-tabba@google.com> X-Mailer: git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog Message-ID: <20260424084908.370776-7-tabba@google.com> Subject: [PATCH 6/6] KVM: arm64: Fix initialisation order in __pkvm_init_finalise() From: Fuad Tabba To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tabba@google.com, catalin.marinas@arm.com, will@kernel.org, maz@kernel.org, oupton@kernel.org, qperret@google.com, suzuki.poulose@arm.com, joey.gouly@arm.com, yuzenghui@huawei.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Quentin Perret fix_host_ownership() walks the hypervisor's stage-1 page-table to adjust the host's stage-2 accordingly. Any such adjustment that requires cache maintenance operations depends on the per-CPU hyp fixmap being present. However, fix_host_ownership() is currently called before fix_hyp_pgtable_refcnt() and hyp_create_fixmap(), so the fixmap does not yet exist when it runs. This is benign today because the host stage-2 starts empty and no CMOs are needed, but it becomes a latent crash as soon as fix_host_ownership() is extended to operate on a non-empty page-table. Reorder the calls so that fix_hyp_pgtable_refcnt() and hyp_create_fixmap() complete before fix_host_ownership() is invoked. Fixes: 0d16d12eb26e ("KVM: arm64: Fix-up hyp stage-1 refcounts for all page= s mapped at EL2") Signed-off-by: Quentin Perret Signed-off-by: Fuad Tabba --- arch/arm64/kvm/hyp/nvhe/setup.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/setup.c b/arch/arm64/kvm/hyp/nvhe/setu= p.c index d8e5b563fd3d..d461981616d9 100644 --- a/arch/arm64/kvm/hyp/nvhe/setup.c +++ b/arch/arm64/kvm/hyp/nvhe/setup.c @@ -312,10 +312,6 @@ void __noreturn __pkvm_init_finalise(void) }; pkvm_pgtable.mm_ops =3D &pkvm_pgtable_mm_ops; =20 - ret =3D fix_host_ownership(); - if (ret) - goto out; - ret =3D fix_hyp_pgtable_refcnt(); if (ret) goto out; @@ -324,6 +320,10 @@ void __noreturn __pkvm_init_finalise(void) if (ret) goto out; =20 + ret =3D fix_host_ownership(); + if (ret) + goto out; + ret =3D hyp_ffa_init(ffa_proxy_pages); if (ret) goto out; --=20 2.54.0.rc2.544.gc7ae2d5bb8-goog