| Message ID | 20260330122601.22140-1-fangyu.yu@linux.alibaba.com |
|---|---|
| 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=zaeP1/Th;
dkim=fail reason="signature verification failed" (1024-bit key;
unprotected) header.d=linux.alibaba.com header.i=@linux.alibaba.com
header.a=rsa-sha256 header.s=default header.b=G8N4pp8p;
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 4fkr8k1Bmqz1yG8
for <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 23:26:46 +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:List-Subscribe:List-Help:List-Post:
List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc
:To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:
Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:
List-Owner; bh=VzbcxseROzDA/hqZqiZAhHYQZSdgMe5UocRstbtlrW8=; b=zaeP1/ThQrtmo9
AsvO5Ecm4Ftrw04sD+0SMRaBCAF6PLm2H2M1iwUOX99gAWHVyD2snJz9Mo4P+wmT4Zq3vOL3H/Oqd
cz7xG3bbLAsCC0hRcJxPW0wClK7Z3iHAY8FUzzPaQkyKf6dRdoCo+uDjkS64Qsq59WAo+oMrJ/vSk
AN/qHtFdmxlUFvxwOoLj7QdZF9p1vexeUqmSD3WO6E8N6AWZqvrXGSl6ngl4AdpUvI7xTqwD3qVT7
xeH5rWrn9yL2WyQkpGbz78dW/iEBZKX1irgkLdYKz1yGnpGQqnzfMFkqn6kI3T2aaYfAEcswWX+hF
6j/KlIdQ6GlSbYcWRnaQ==;
Received: from localhost ([::1] helo=bombadil.infradead.org)
by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))
id 1w7Bhc-0000000BFmI-1wBH;
Mon, 30 Mar 2026 12:26:44 +0000
Received: from out30-97.freemail.mail.aliyun.com ([115.124.30.97])
by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))
id 1w7BhY-0000000BFjh-2Yq5;
Mon, 30 Mar 2026 12:26:42 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linux.alibaba.com; s=default;
t=1774873594; h=From:To:Subject:Date:Message-Id:MIME-Version;
bh=e3bSMhi6+wVEeJDisGEe9u8O9wBAMD6ULsYIH98k5xg=;
b=G8N4pp8p66w02Fa0ntkmDhbLOT0if3RXDGefnbY0s2TRwKS4ssWt2ouZD8YmM4oueicGuk1zO+k8gq7D/8wqwdnxKTvZO9FsTFAxwm2kGK7pjYlcG5EtnQWho8okNWG70BSJ3HaBDKEPH6+7tqXxceFHXQqZOGJ7PnzMcX7FEAM=
X-Alimail-AntiSpam:
AC=PASS;BC=-1|-1;BR=01201311R691e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037033178;MF=fangyu.yu@linux.alibaba.com;NM=1;PH=DS;RN=18;SR=0;TI=SMTPD_---0X.zfcHH_1774873586;
Received: from localhost.localdomain(mailfrom:fangyu.yu@linux.alibaba.com
fp:SMTPD_---0X.zfcHH_1774873586 cluster:ay36)
by smtp.aliyun-inc.com;
Mon, 30 Mar 2026 20:26:28 +0800
From: fangyu.yu@linux.alibaba.com
To: pbonzini@redhat.com,
corbet@lwn.net,
anup@brainfault.org,
atish.patra@linux.dev,
pjw@kernel.org,
palmer@dabbelt.com,
aou@eecs.berkeley.edu,
alex@ghiti.fr,
skhan@linuxfoundation.org
Cc: guoren@kernel.org,
radim.krcmar@oss.qualcomm.com,
andrew.jones@oss.qualcomm.com,
linux-doc@vger.kernel.org,
kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org,
linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org,
Fangyu Yu <fangyu.yu@linux.alibaba.com>
Subject: [PATCH v6 0/4] Support runtime configuration for per-VM's HGATP mode
Date: Mon, 30 Mar 2026 20:25:57 +0800
Message-Id: <20260330122601.22140-1-fangyu.yu@linux.alibaba.com>
X-Mailer: git-send-email 2.39.3 (Apple Git-146)
MIME-Version: 1.0
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
X-CRM114-CacheID: sfid-20260330_052640_898364_810A1709
X-CRM114-Status: UNSURE ( 9.32 )
X-CRM114-Notice: Please train this message.
X-Spam-Score: -14.6 (--------------)
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: From: Fangyu Yu <fangyu.yu@linux.alibaba.com> Currently,
RISC-V
KVM hardcodes the G-stage page table format (HGATP mode) to the maximum
mode
detected at boot time (e.g., SV57x4 if supported). but often such a wide
GPA is unnecessary, just as a ho [...]
Content analysis details: (-14.6 points, 5.0 required)
pts rule name description
---- ----------------------
--------------------------------------------------
-7.5 USER_IN_DEF_DKIM_WL From: address is in the default DKIM welcome-list
-7.5 USER_IN_DEF_SPF_WL From: address is in the default SPF welcome-list
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
not necessarily valid
-0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from
envelope-from domain
-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]
1.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[115.124.30.97 listed in
sa-trusted.bondedsender.org]
1.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to
Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[115.124.30.97 listed in sa-accredit.habeas.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no
trust
[115.124.30.97 listed in list.dnswl.org]
0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay
lines
-0.5 ENV_AND_HDR_SPF_MATCH Env and Hdr From used in default SPF WL Match
1.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to
Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[115.124.30.97 listed in
bl.score.senderscore.com]
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>
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 |
Support runtime configuration for per-VM's HGATP mode
|
expand
|
From: Fangyu Yu <fangyu.yu@linux.alibaba.com> Currently, RISC-V KVM hardcodes the G-stage page table format (HGATP mode) to the maximum mode detected at boot time (e.g., SV57x4 if supported). but often such a wide GPA is unnecessary, just as a host sometimes doesn't need sv57. This patch introduces per-VM configurability of the G-stage mode via a new KVM capability: KVM_CAP_RISCV_SET_HGATP_MODE. User-space can now explicitly request a specific HGATP mode (SV39x4, SV48x4, SV57x4 or SV32x4) during VM creation. --- Changes in v6 (Anup's suggestions): - Reworked kvm_riscv_gstage_gpa_bits() and kvm_riscv_gstage_gpa_size() to take "unsigned long pgd_levels" instead of "struct kvm_arch *". - Moved kvm_riscv_gstage_mode() helper from kvm_host.h to kvm_gstage.h. - Renamed kvm->arch.kvm_riscv_gstage_pgd_levels to kvm->arch.pgd_levels. - Added pgd_levels to struct kvm_gstage to avoid repeated gstage->kvm->arch pointer chasing. - Link to v5: https://lore.kernel.org/linux-riscv/20260204134507.33912-1-fangyu.yu@linux.alibaba.com/ --- Changes in v5: - Use architectural HGATP.MODE encodings as the bit index for the supported-mode bitmap and for the VM-mode selection UAPI; no new UAPI mode/bit defines are introduced(per Radim). - Allow KVM_CAP_RISCV_SET_HGATP_MODE on RV32 as well(per Drew). - Link to v4: https://lore.kernel.org/linux-riscv/20260202140716.34323-1-fangyu.yu@linux.alibaba.com/ --- Changes in v4: - Extend kvm_riscv_gstage_mode_detect() to probe all HGATP.MODE values supported by the host and record them in a bitmask. - Treat unexpected pgd_levels in kvm_riscv_gstage_mode() as an internal error (e.g. WARN_ON_ONCE())(per Radim). - Move kvm_riscv_gstage_gpa_bits() and kvm_riscv_gstage_gpa_size() to header as static inline helpers(per Radim). - Drop gstage_mode_user_initialized and Remove the kvm_debug() message from KVM_CAP_RISCV_SET_HGATP_MODE(per Radim). - Link to v3: https://lore.kernel.org/linux-riscv/20260125150450.27068-1-fangyu.yu@linux.alibaba.com/ --- Changes in v3: - Reworked the patch formatting (per Drew). - Dropped kvm->arch.kvm_riscv_gstage_mode and derive HGATP.MODE from kvm_riscv_gstage_pgd_levels via a helper, avoiding redundant per-VM state(per Drew). - Removed kvm_riscv_gstage_max_mode and keep only kvm_riscv_gstage_max_pgd_levels for host capability detection(per Drew). - Other initialization and return value issues(per Drew). - Enforce that KVM_CAP_RISCV_SET_HGATP_MODE can only be enabled before any vCPUs are created by rejecting the ioctl once kvm->created_vcpus is non-zero(per Radim). - Add a memslot safety check and reject the capability unless kvm_are_all_memslots_empty(kvm) is true, ensuring the G-stage format is not changed after any memslots have been installed(per Radim). - Link to v2: https://lore.kernel.org/linux-riscv/20260105143232.76715-1-fangyu.yu@linux.alibaba.com/ Fangyu Yu (4): RISC-V: KVM: Support runtime configuration for per-VM's HGATP mode RISC-V: KVM: Cache gstage pgd_levels in struct kvm_gstage RISC-V: KVM: Detect and expose supported HGATP G-stage modes RISC-V: KVM: add KVM_CAP_RISCV_SET_HGATP_MODE Documentation/virt/kvm/api.rst | 27 ++++++++ arch/riscv/include/asm/kvm_gstage.h | 58 ++++++++++++++-- arch/riscv/include/asm/kvm_host.h | 1 + arch/riscv/kvm/gstage.c | 102 ++++++++++++++-------------- arch/riscv/kvm/main.c | 12 ++-- arch/riscv/kvm/mmu.c | 70 ++++++------------- arch/riscv/kvm/vm.c | 20 +++++- arch/riscv/kvm/vmid.c | 3 +- include/uapi/linux/kvm.h | 1 + 9 files changed, 178 insertions(+), 116 deletions(-)