From nobody Tue Feb 10 10:12:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745767657309160.6213704132581; Sun, 27 Apr 2025 08:27:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u93uE-0004aD-Qy; Sun, 27 Apr 2025 11:26:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u921X-0002lx-H1; Sun, 27 Apr 2025 09:26:23 -0400 Received: from smtp21.cstnet.cn ([159.226.251.21] helo=cstnet.cn) by eggs.gnu.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1u921R-0000Sk-Ew; Sun, 27 Apr 2025 09:26:22 -0400 Received: from iscas.ac.cn (unknown [180.136.146.38]) by APP-01 (Coremail) with SMTP id qwCowABnEAFlMA5o6DeDDA--.6612S2; Sun, 27 Apr 2025 21:25:59 +0800 (CST) From: Meng Zhuo To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, Alistair Francis , Liu Zhiwei , Weiwei Li , Palmer Dabbelt , Daniel Henrique Barboza , Meng Zhuo Subject: [PATCH] target/riscv: add satp mode for kvm host cpu Date: Sun, 27 Apr 2025 21:25:57 +0800 Message-Id: <20250427132557.1589276-1-mengzhuo@iscas.ac.cn> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowABnEAFlMA5o6DeDDA--.6612S2 X-Coremail-Antispam: 1UD129KBjvJXoW7tw4rZw48XrW3uF1DtrWUurg_yoW8Zr17pF W3GrZ0kr4fJF9rJayfJr1kXF15G395KF4Dta17GF17XFs8trWjgF1vg347ZF9xGFW8Za15 Aa1ktFWxCF4rtFJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkl14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26r1I6r4UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4j 6F4UM28EF7xvwVC2z280aVAFwI0_Cr1j6rxdM28EF7xvwVC2z280aVCY1x0267AKxVW0oV Cq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0 I7IYx2IY67AKxVWUGVWUXwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r 4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWU AVWUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14 v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkG c2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4U MIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7VU18sqtUUUU U== X-Originating-IP: [180.136.146.38] X-CM-SenderInfo: pphqw6xkxrqxpvfd2hldfou0/1tbiDAUFEmgN68em0gAAsj Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=159.226.251.21; envelope-from=mengzhuo@iscas.ac.cn; helo=cstnet.cn X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 27 Apr 2025 11:26:55 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1745767662408019100 Content-Type: text/plain; charset="utf-8" This patch adds host satp mode while kvm/host cpu satp mode is not set. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2931 Signed-off-by: Meng Zhuo --- target/riscv/kvm/kvm-cpu.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 5315134e08..942f942b25 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -953,6 +953,21 @@ static void kvm_riscv_destroy_scratch_vcpu(KVMScratchC= PU *scratch) close(scratch->kvmfd); } =20 +static void kvm_riscv_init_satp_mode(RISCVCPU *cpu, KVMScratchCPU *kvmcpu) +{ + CPURISCVState *env =3D &cpu->env; + struct kvm_one_reg reg; + int ret; + uint64_t val; + reg.id =3D RISCV_CONFIG_REG(env, satp_mode); + reg.addr =3D (uint64_t)&val; + ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); + if (ret !=3D 0) { + error_report("Unable to retrieve satp from host, error %d", ret); + } + env->satp =3D 1 << val; +} + static void kvm_riscv_init_machine_ids(RISCVCPU *cpu, KVMScratchCPU *kvmcp= u) { CPURISCVState *env =3D &cpu->env; @@ -1212,6 +1227,7 @@ static void riscv_init_kvm_registers(Object *cpu_obj) kvm_riscv_init_machine_ids(cpu, &kvmcpu); kvm_riscv_init_misa_ext_mask(cpu, &kvmcpu); kvm_riscv_init_multiext_cfg(cpu, &kvmcpu); + kvm_riscv_init_satp_mode(cpu, &kvmcpu); =20 kvm_riscv_destroy_scratch_vcpu(&kvmcpu); } @@ -1891,7 +1907,16 @@ static bool kvm_cpu_realize(CPUState *cs, Error **er= rp) } } =20 - return true; + RISCVSATPMap *satp_mode =3D &cpu->cfg.satp_mode; + CPURISCVState *env =3D &cpu->env; + + if (!satp_mode->init && env->satp) { + satp_mode->init =3D env->satp; + satp_mode->map =3D env->satp; + satp_mode->supported =3D env->satp; + } + + return true; } =20 void riscv_kvm_cpu_finalize_features(RISCVCPU *cpu, Error **errp) --=20 2.39.5