From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745596995; cv=none; d=zohomail.com; s=zohoarc; b=HiaPaDSb9/ZxGlq9flDt1Z9pnKluxe0+XhZJX0BAy+gA+ceMP/w+kp4bDxTLMjhRDDOjaZ4JRt1X/BzVsJXJKI3jf3c2TsJSdA0jCxtYGJK1nNmF8kSEMiRkG26XzVCj8rQq3kI7tia68QRysNi2IV7lN9bXhKJU6ir1fFu1VD0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745596995; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4Uq/rLXIS8ug5SKK/6uy5oyF7TJvUXA2Q9EXkRFfaBA=; b=AZ/eJAhXMstqQtILDuDQ7Njf2xHkz/WTYRkDEX3zJ9vNgG414euPNFVBNJKb9+FVQBe5DIPgPK8JPxvUckaAy9ZARpEn4R5L+eJRb+VpMWaGAe28EPEpSWSS8vTV/uDqTQah0PcRXwHhVsHh2oIkQmXN8agrJH8SzbAaUoKjKnE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745596995934966.6221922175823; Fri, 25 Apr 2025 09:03:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVV-00060V-04; Fri, 25 Apr 2025 12:02:29 -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 1u8LVI-0005qa-Qb for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:18 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVG-0008L5-Fb for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:16 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-879d2e419b9so2179088a12.2 for ; Fri, 25 Apr 2025 09:02:13 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596932; x=1746201732; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4Uq/rLXIS8ug5SKK/6uy5oyF7TJvUXA2Q9EXkRFfaBA=; b=FKn/Ofz86ol5CkgBNvfpMWpww+YutGcvmj5Cx0Zx/P8rzZI5cOVzqeoD58fyaxUqYs BU0w/a2RJbz5ToE0uUMp7vXYpmJZrExRj+VW+sSHTu3u4XiTe2sTiZpZPm1phUSk8kb+ XL7PCsW3IE8/k9x8CIwDCsC+TRJb7mZE0JkGAAyuI0qAWs018G0I7kPFk9cobvuGFF2x NGKo/k8Q/cEMKnhmAUgcvea56hKmvq5GbtOC9VXSX4X7D9YnVX2oNBlqm12oa6CMJ+Tl 4WP+tSmoYzjyyP+wu0K5hEB9E9AxqfLubehn3zJjt0mOqKw1rM75l5TRsdXeUs/CfCqU FFhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596932; x=1746201732; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4Uq/rLXIS8ug5SKK/6uy5oyF7TJvUXA2Q9EXkRFfaBA=; b=hd/5yEWGlJyxOKMoISFPDWQ09l7DbQXADvT5sI/yJKrV6WayvxmSjSGhlTxVv3+xlD RlTuWuqb26nmOz1dReVUauyZb7cLc88gTOjTXZpANUU+WPACZTQOwb3cP6tXr4JMARTu eKbo+Jz/g6ilUs25p7UgRhVkrW9JfTIQfoSBdRKuNVRU5WWNyuEjj5anCh6cSbx6x9Pf siu5ueJCHp+7Q9Zr6CHclkuJWrNyr1kUzljgENJ2Mb9Tl24NQZykhX9jCdl9UeMaMcgp WvBbKXx3BX3Tkp0WBR5YngOWuZxH8YVd9jNA8w1x9WbPuLcfCbOEcRU/ZzUvJ2NM40aB 2zwg== X-Gm-Message-State: AOJu0YwA69Eu095ryTlkLZ0c2gj5Dn4T4yEk1Meb0jRtG6VGSfdCqrug VWnUrxlRAKtQE7ThdF/SlMvaTWfnoW0kqpwKnctYUWqgBkT4FEyBx4nCqVY4WrrhEg0hedYR7fT b X-Gm-Gg: ASbGncvUd99rsz8BH6zOCHFWyLqQuFPLCfJT6fRJW9GqwojUVEquswc0dO/1T1lM0pu qg14XbyX2d21u5lLayXkIJ2CK1TaMmlrv56JAJgkozG8v0sNhFgpSMTKUZzpHcgNWqYpf5cwYDE PQh+qVjxJcIlZAFcttvXb6VKvwsB/oLgocUh1XtS7dfUiBstwUx4yXkYvByAi6LlgvUgwXdlvBR V8AOviiHk6LiUR/kuKJ/X7yKiDWA16eOH5pYrpnfNIOsp8haOzx0D3t960C+mApQs9b6HJ7I+9R DRYUxYITtjfqOTHGjLMD6r8DeySyKB3ppBtc4YFqZyA+todMiUjIq/JYtrxphgeePpHB X-Google-Smtp-Source: AGHT+IGWntJ8BdmmmO8HLMFPWXPXnvkqaifuhzit9YVgmilTbooyzsVLnq34twFn+enqwItCyGOdPQ== X-Received: by 2002:a17:90b:4f46:b0:2ee:8430:b831 with SMTP id 98e67ed59e1d1-309f7da0a24mr4695670a91.2.1745596931499; Fri, 25 Apr 2025 09:02:11 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 1/9] target/riscv/kvm: minor fixes/tweaks Date: Fri, 25 Apr 2025 13:01:55 -0300 Message-ID: <20250425160203.2774835-2-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::534; envelope-from=dbarboza@ventanamicro.com; helo=mail-pg1-x534.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745596998770019000 Content-Type: text/plain; charset="utf-8" Remove an unused 'KVMScratchCPU' pointer argument in kvm_riscv_check_sbi_dbcn_support(). Put kvm_riscv_reset_regs_csr() after kvm_riscv_put_regs_csr(). This will make a future patch diff easier to read, when changes in kvm_riscv_reset_regs_csr() and kvm_riscv_get_regs_csr() will be made. Fixes: a6b53378f5 ("target/riscv/kvm: implement SBI debug console (DBCN) ca= lls") Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 9214ce490c..accad4c28e 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -613,19 +613,6 @@ static int kvm_riscv_put_regs_core(CPUState *cs) return ret; } =20 -static void kvm_riscv_reset_regs_csr(CPURISCVState *env) -{ - env->mstatus =3D 0; - env->mie =3D 0; - env->stvec =3D 0; - env->sscratch =3D 0; - env->sepc =3D 0; - env->scause =3D 0; - env->stval =3D 0; - env->mip =3D 0; - env->satp =3D 0; -} - static int kvm_riscv_get_regs_csr(CPUState *cs) { CPURISCVState *env =3D &RISCV_CPU(cs)->env; @@ -660,6 +647,19 @@ static int kvm_riscv_put_regs_csr(CPUState *cs) return 0; } =20 +static void kvm_riscv_reset_regs_csr(CPURISCVState *env) +{ + env->mstatus =3D 0; + env->mie =3D 0; + env->stvec =3D 0; + env->sscratch =3D 0; + env->sepc =3D 0; + env->scause =3D 0; + env->stval =3D 0; + env->mip =3D 0; + env->satp =3D 0; +} + static int kvm_riscv_get_regs_fp(CPUState *cs) { int ret =3D 0; @@ -1078,7 +1078,6 @@ static int uint64_cmp(const void *a, const void *b) } =20 static void kvm_riscv_check_sbi_dbcn_support(RISCVCPU *cpu, - KVMScratchCPU *kvmcpu, struct kvm_reg_list *reglist) { struct kvm_reg_list *reg_search; @@ -1197,7 +1196,7 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) kvm_riscv_read_vlenb(cpu, kvmcpu, reglist); } =20 - kvm_riscv_check_sbi_dbcn_support(cpu, kvmcpu, reglist); + kvm_riscv_check_sbi_dbcn_support(cpu, reglist); } =20 static void riscv_init_kvm_registers(Object *cpu_obj) --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745596997; cv=none; d=zohomail.com; s=zohoarc; b=BODbqDvRbcPGwdO06aAyJh2CTvGSKoSduUXsv86+56+UNXmlzAMKj28UEjrMkCes73GJsx1jWmBTUr9OrbDL5b28hoSthT1xlss2xXU6ShFid0/H73ChIk5DLo2gF61lRrv4D1OeUkPQcspieo3t0vUx57W4NgbIDp+a1PHVtv8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745596997; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ab0hxCGBF3pfbaX98DmfHee2+O+PPD2JzKONPAU5M6Q=; b=TuJbHAsP5dK65PRBuIuN2LtRGKg3K/w0zQ2tkx/k4wzOdE8cN8AK1MLJ+mqNWtMP5MaQX7NNOs99FkUMZN3LBvpbAFWv91qC7KEIefsm5zWvWBSGLWXu5N1B3BwDHp+uTKiW1to/W3yXjenptXlXfN+Ib7zfXip7gn6Q04lPqMo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745596997731299.6307501809873; Fri, 25 Apr 2025 09:03:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVW-00065N-P9; Fri, 25 Apr 2025 12:02:30 -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 1u8LVL-0005rp-87 for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:22 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVJ-0008LQ-FB for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:18 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-30863b48553so3340262a91.0 for ; Fri, 25 Apr 2025 09:02:16 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596934; x=1746201734; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ab0hxCGBF3pfbaX98DmfHee2+O+PPD2JzKONPAU5M6Q=; b=c/wFqwj3yRu1ojEQxGEcuqvY4BJujlPaXZ+mHMotK9PQn7hzCJKD8U1J6IMZY52sec CpifM41jLy4Ke86nrZVIukQL+GQt76oSJ4PvLF9Ld3YS0lFR4E4An4DJ9+m1G2upvKzt DvcoQ+7vcR5BlW9K3ZoTfPvipAzOpYjuPFmbLE73cw1wWReFmtOdSmYWY65pulvRI/bX VRcHFR/+JKtvDaz7M+ld6gvYMcx41NNGXnkN0wUcltKVftOF6B8xUOkJDJfq4NHGrUCh IUkSMnYWaSgBoVaVYbZ+CkQZfYEziMQvjjQeNKEWHxUK3ytHv1IpYejt7UHnU3MZCdtc N7YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596934; x=1746201734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ab0hxCGBF3pfbaX98DmfHee2+O+PPD2JzKONPAU5M6Q=; b=dGD4CtQLSgec+0w/IEh/7qq4sEYkNZxwj9WvwWIWx8/7dgoGBs65/4MSs1/Rswzug/ IbFKcuwXdfdNViUDry0XeF3014HuLF3zryoNjuj1Fk0tNGuti87pMTkjuyP2lxNp2Znh cciVP+Fst26j3O0mqS5Wiaby/CQ5xq34YBXWWvNSgAv1CchtkytIcucHt6UruexHKNdy sQSKLJPTLzXOTdXPwqD71d8XwyuKmFkbMG9oJfXngkPTJdJaKF3yfAUUEk7DpVceeI7K 0nTM59T+Oer6EPniAqaVGRjK7fmJJuU3B2XAGRpMn3OzK3NgZaiR2bltD0F2BM/RsTDp oxXQ== X-Gm-Message-State: AOJu0Yz7a+vRZHXvOwYENrl5lCNTJneDKQienpOiMImlCInBSb9NHo8R ZHOgKBEJwTsVNdupXsJi0zxwXIBGGPCJqgkbJpS9tfkgZrOtm2dYS7ZLkt9QbocZcvCSqf7OkaM p X-Gm-Gg: ASbGncsUTmEMJPfl/8XJVN/TqZL0BC5dxYUvusBlo+7/m1iDI2kMPDXoWV94dMdvnJx zTND8Ix3VJeJMlT2OBQ/+F6m3NkWSc+7tylNbD/ykBRHls8AvGCBLTC52fK8YbaFNNEyIZ8Kc8/ X94ndqPZ0qhwMHjvdjjRAlL2SecmmVEsjz/LMv/gzJiC/uJtrjlBO6yZrJuDUaZY7rTPZQ9eSyk 3p4wvV2cgrbxwDZygpL5CZHWz4j8/Qs0kclPgtaCMyY4WteWzU8Lr6u6EB8obqisFLBYyrYgmZD ButNnbPise6GS9ff3TbLOt9cUR/BNoEAH2aY3ONFU42Rt1wmfXCl2TqcHYmOOjKmRCxU X-Google-Smtp-Source: AGHT+IEuNTH+uwZZaJHeVoNRdiW7w8HwcKcfZphEgB0v8Bh/ansYim3xn3jpCrDFb6hu6Nl1yBOydw== X-Received: by 2002:a17:90b:37c4:b0:2fa:21d3:4332 with SMTP id 98e67ed59e1d1-309ee3f8c4fmr9797093a91.12.1745596934364; Fri, 25 Apr 2025 09:02:14 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 2/9] target/riscv/kvm: fix leak in kvm_riscv_init_multiext_cfg() Date: Fri, 25 Apr 2025 13:01:56 -0300 Message-ID: <20250425160203.2774835-3-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::102f; envelope-from=dbarboza@ventanamicro.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745596999786019000 Content-Type: text/plain; charset="utf-8" 'reglist' is being g-malloc'ed but never freed. Reported-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index accad4c28e..6ba122f360 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -1119,10 +1119,10 @@ static void kvm_riscv_read_vlenb(RISCVCPU *cpu, KVM= ScratchCPU *kvmcpu, =20 static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu, KVMScratchCPU *kvmc= pu) { + g_autofree struct kvm_reg_list *reglist =3D NULL; KVMCPUConfig *multi_ext_cfg; struct kvm_one_reg reg; struct kvm_reg_list rl_struct; - struct kvm_reg_list *reglist; uint64_t val, reg_id, *reg_search; int i, ret; =20 --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597107; cv=none; d=zohomail.com; s=zohoarc; b=VYf5/bFHKxP0OUnE/53jznC6r+Txv2aaWAjwxSJ3y9ircTH3uARA8TOoZZVo00d0/9kNmxEthQIsRUQP/FMiAS+ctzaLsxKOr9wd6U24oWPQIM19+GIw29dc6vOXNqoQ9qo+bUXtBEsB/XIpUkIspUiZt2MtY8SWiTTvKMnTcMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597107; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mysvDSm/Jc56rhNUm6asG4M9/OvRcpOng4mCRfmCeZk=; b=dhooZHzmzu+9YOXxpZzKR3l3/K4jcBfok+qIJ5vvq2OXlqwpTzXwN1RW0lH/935e+NVa/3b23czGH61r/gVgoAAdi6huMsNUOsKN3n7+mwP29Q+fB3FI0OlhfZiRclYNt1Xu1E9aQ3r2wmpS+Mng3kEQzq0Wu+3f6KXIR6Ul1KU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745597107214348.67100167596266; Fri, 25 Apr 2025 09:05:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVa-0006Ao-2v; Fri, 25 Apr 2025 12:02:35 -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 1u8LVM-0005sJ-Pl for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:22 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVL-0008Ln-1t for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:20 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-af6a315b491so2376393a12.1 for ; Fri, 25 Apr 2025 09:02:18 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596937; x=1746201737; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mysvDSm/Jc56rhNUm6asG4M9/OvRcpOng4mCRfmCeZk=; b=oHx4zR/b7GJclGSbtTByGFOK1679ePdkOmWEUlW08eMJob1HKroH7pfMZTcH2uqett BkQKJSzhFs4ri8LarAvO8EJ4jS8G9sRBqRo/swoRYJofhLJXv1Hyo/H/qZlXICN80l6D TDSQUaztcX6f+UNIUjNEwA7j35LKLj6Bb0dVUl/cMvr2C6sGkv69x7cmpG2oZDqXDfnL idr85PnVNAQr2Jax3IqDr3ZHj2ar7nLn6HxO8rbhTIabT8TxMJn1xPF+H4vkOpuqI3ib n4wlcmNhqqTgU4hxG68lGaHIOtYjds8rVBoA9b0KSvw86Rdi3heWJMli9YWjlJsybR0V dI+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596937; x=1746201737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mysvDSm/Jc56rhNUm6asG4M9/OvRcpOng4mCRfmCeZk=; b=I3yKZWY7rkXW7namAF6R0zc8l3pYhyRg0jy3Ad6EAjyZijl8/+VIhrdD7QZx+rewKT J/UmNBzfKpi/uuIEio1poxMavBF1UsMcYubmvg+KRavaLoR8t0pOtTIxYwdZOwAUdiyM rSmWSF9dKzeSdY2pMSCcPRhDba6SXdDZIxVUT8uu+gVE1Hc4zKx7xmor2UAP7oGqlpWP Mwi2Az1w2p2FkYtCzkiN6rxB7+8At9bqFZm8S6SNyDjEk8akhsLmgd42/nAj/mhzlu6J 7WISbqNTNl0hFbsUxzv4GT0QHGvQbdjTdelIcwHc3FFgnx5BcgiWvvl4Bq1iu5NXh5bW vzog== X-Gm-Message-State: AOJu0YxqAlnlFTHhjDfYB5y12Nfqvqxx8lYOd+CZTbPKZSxbBMk4sF7P BQC3zQs0c6L4CqZ5ShHAIBQ3Ft5GHiflY5g9zNwylkDXdfEv0ahZy5xXUThq2/wBDdBvbA+AivY Q X-Gm-Gg: ASbGnctnCqN02sMNaWMXT09bOVgzqutCR5XcQXMRV6L9ZZSq3zuK8bg83L1xwNtqLIC f5CgR8gL7Ku07m2VTwr5cMy539iORQPuV1Ue/EngGYsFTH+z+yNfysBlTsHRV0Bt2h+0vcIJa0M JwxhR53nq3QJr5V4wPS+PDCfaONPU/6OCaOPNu/BijV0JesK7M15CgQD6Z2zZ/+eoQP9vliaJS5 Pcgvwey9XU2pnmZi/1+S5piLUbVGa9na+F2fwGnDI2F7Ni084bFuAJuJdJQA7iUFhyVtZse+4qG uPWGSHNUqo//MWymzO+qUfcuBT/hbbRNr2T6G8qxdQL1nXbbfmi3Ss8dQNNXrETX7Iul X-Google-Smtp-Source: AGHT+IHB4mUcuFm+GKhG7QrzRS48FcS5IkaNzF9uvLcHu3c9ZyoKZkjpaOJ4eHd0Fcb5YKKy8wnp0A== X-Received: by 2002:a17:90b:48:b0:2ee:b8ac:73b0 with SMTP id 98e67ed59e1d1-30a01300dddmr205836a91.2.1745596937323; Fri, 25 Apr 2025 09:02:17 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 3/9] target/riscv/kvm: turn u32/u64 reg functions into macros Date: Fri, 25 Apr 2025 13:01:57 -0300 Message-ID: <20250425160203.2774835-4-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::52a; envelope-from=dbarboza@ventanamicro.com; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597108546019100 Content-Type: text/plain; charset="utf-8" This change is motivated by a future change w.r.t CSRs management. We want to handle them the same way as KVM extensions, i.e. a static array with KVMCPUConfig objs that will be read/write during init and so on. But to do that properly we must be able to declare a static array that hold KVM regs. C does not allow to init static arrays and use functions as initializers, e.g. we can't do: .kvm_reg_id =3D kvm_riscv_reg_id_ulong(...) When instantiating the array. We can do that with macros though, so our goal is turn kvm_riscv_reg_ulong() in a macro. It is cleaner to turn every other reg_id_*() function in macros, and ulong will end up using the macros for u32 and u64, so we'll start with them. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 6ba122f360..c91ecdfe59 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -58,6 +58,12 @@ void riscv_kvm_aplic_request(void *opaque, int irq, int = level) =20 static bool cap_has_mp_state; =20 +#define KVM_RISCV_REG_ID_U32(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U32 = | \ + type | idx) + +#define KVM_RISCV_REG_ID_U64(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U64 = | \ + type | idx) + static uint64_t kvm_riscv_reg_id_ulong(CPURISCVState *env, uint64_t type, uint64_t idx) { @@ -76,16 +82,6 @@ static uint64_t kvm_riscv_reg_id_ulong(CPURISCVState *en= v, uint64_t type, return id; } =20 -static uint64_t kvm_riscv_reg_id_u32(uint64_t type, uint64_t idx) -{ - return KVM_REG_RISCV | KVM_REG_SIZE_U32 | type | idx; -} - -static uint64_t kvm_riscv_reg_id_u64(uint64_t type, uint64_t idx) -{ - return KVM_REG_RISCV | KVM_REG_SIZE_U64 | type | idx; -} - static uint64_t kvm_encode_reg_size_id(uint64_t id, size_t size_b) { uint64_t size_ctz =3D __builtin_ctz(size_b); @@ -119,12 +115,12 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, \ KVM_REG_RISCV_CONFIG_REG(name)) =20 -#define RISCV_TIMER_REG(name) kvm_riscv_reg_id_u64(KVM_REG_RISCV_TIMER, \ +#define RISCV_TIMER_REG(name) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_TIMER, \ KVM_REG_RISCV_TIMER_REG(name)) =20 -#define RISCV_FP_F_REG(idx) kvm_riscv_reg_id_u32(KVM_REG_RISCV_FP_F, idx) +#define RISCV_FP_F_REG(idx) KVM_RISCV_REG_ID_U32(KVM_REG_RISCV_FP_F, idx) =20 -#define RISCV_FP_D_REG(idx) kvm_riscv_reg_id_u64(KVM_REG_RISCV_FP_D, idx) +#define RISCV_FP_D_REG(idx) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_FP_D, idx) =20 #define RISCV_VECTOR_CSR_REG(env, name) \ kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_VECTOR, \ --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597125; cv=none; d=zohomail.com; s=zohoarc; b=JkX9tsu8bPyikjz3jyvZoBrfKEx1ST5vHZ2bV01cFBYNElnUlX27HSURuJroeph4q4hT3fnLpKUmha0H/7K8U/rnVOnofbwRvRZK4gx3uOnChmHMGi683PHBX+diuUazQuxBvdCBjjWWPUOsg3dphx+ufoGh2lr22NDJwqvTrQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597125; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wX9wDu4OfFRlsNcunpFZbHb+zFfpsh/L9aE95VqymN0=; b=DZVmfxguJVUYQYRqHJBPpZhA9F96efQBHndNBTBj3T/DfVlOmJHxARztoXvsjE9PL6uSudaMOe56tslZmDro+AxXSZ3UvYToCPDlqPvpKfwwp5RcrCMf4GefAr719Pxkz6mKDKpaU7JGSVdukmmPVNugFnlfSr5hjUS24mRbJRw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745597125286300.2647203801223; Fri, 25 Apr 2025 09:05:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVX-00067G-EJ; Fri, 25 Apr 2025 12:02:31 -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 1u8LVS-0005yC-80 for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:27 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVO-0008MI-7S for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:25 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-b1396171fb1so1586228a12.2 for ; Fri, 25 Apr 2025 09:02:21 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596940; x=1746201740; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wX9wDu4OfFRlsNcunpFZbHb+zFfpsh/L9aE95VqymN0=; b=aY0+NqTc8eEOQZAqFTtELkEXF0uQ68elsAwnTCrJvRcFFMjgWAkLjw0ceqsidqPcOZ 89lAY1/wCb1D7sZs9rmZMII6lmurDPwgKLmULlCTycBL450na3SSBObVYRE+h6f/a7ua vdoa18s5Apm8tTYsyeDR/HA2RHR2JKQ4lYQnYr+cptoEkQUvy6m3tf0bNX5suKU6X4kO aW27qZY3rHsPZQVFeG6M1e7Qzjs8Q3GGwptPnrPcRLOCHWDJtiVZB6HizesvSc7YTxcO wzge/SXvHYcqJ2LlZP4xkHTzINEyGVnDjgJo+6g/nQ1v7kbEHKAXy8ObXxcK24bGQpx5 ulag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596940; x=1746201740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wX9wDu4OfFRlsNcunpFZbHb+zFfpsh/L9aE95VqymN0=; b=OIBsyVV+CfxEsDu7nH9FSR+hL/+1+XVvH2Kl7+vYsV6DSDlYOz5ZaBeQefeCwo5cSf z/LT++gbvloTbtAdkNVn/EKnsMOQnJuWGmiBbn9y7egxGXDDkwfPxRukxwTp1OHQrQAJ olxn1HnFW6YfStyMftupGVNJ0ZtmnWwaydpaWUXiLbfAswMp7cJGjFP1Tc03YAD6ohPz vzV6Fxlph3RoeOjax5JAmwTrT/Fl4nlSCalog9TemoT0ZBJqT0fO7Sf5TehvFLlu1c7m 36DgMO5JkmPy+s6J6d5ImvhX8LFcYosXzMZHp6vTth5PiHxQ1JrEdXftUSO83Lx7zaJq M67w== X-Gm-Message-State: AOJu0YwxPHzPOSMGkWs1LHTNhgSDDsv92Rmbd3LCm6cRN8R3fvvtmgFW MhOFe6v1x+85JoWdBruDWDGZyGSkt5S9XekIS1Uhy4ENjI87zZHtbSTZU6gPFbNoyp8k0bi4uSY / X-Gm-Gg: ASbGncudu2iEWE1Lq+pARFt8BwNtad2zGyjmQF3yLNUlfzaw/INdfXUt6bRNPHRlAiY KtdKjKGVip40h+ojx3I/AmuFAGJ+0ed9fs5N45DmiEQp5B1eJnQNARyKRv5gbFvuLdJ2Q9U3Vzh 76hkZx2qLfu9j8jaaXdp4h3mjwIP2mJztny0cBshtKF5rFAPhXv73tS8e24gdgGJTk3sgH2dIPU FH/t/TITm10+DawNFw/Tnd7SwShb7oYUUZi+6FN/B3ByNEfJzemuPuX1F+mnzy8TEuXVC5MSQ6t CbingKnXCVAUrerJCcjS49pnbYrKH3UkZtvvTWtzCHwLtSwxkDBgaoNstDo4GVlBfv8V8XPr0eB 3OBY= X-Google-Smtp-Source: AGHT+IGNSoosP1JvnNXrmhHZ1SYKJ4bKB1jqtfOPnboCFmSDgP+L++q8cAyOPtfKdXuJfqb8T93Y3A== X-Received: by 2002:a17:90a:c88b:b0:306:b78a:e22d with SMTP id 98e67ed59e1d1-309f7df5685mr4306175a91.20.1745596940249; Fri, 25 Apr 2025 09:02:20 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 4/9] target/riscv/kvm: turn kvm_riscv_reg_id_ulong() into a macro Date: Fri, 25 Apr 2025 13:01:58 -0300 Message-ID: <20250425160203.2774835-5-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::535; envelope-from=dbarboza@ventanamicro.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597126289019000 Content-Type: text/plain; charset="utf-8" We need the reg_id_ulong() helper to be a macro to be able to create a static array of KVMCPUConfig that will hold CSR information. Despite the amount of changes all of them are tedious/trivial: - replace instances of "kvm_riscv_reg_id_ulong" with "KVM_RISCV_REG_ID_ULONG"; - RISCV_CORE_REG(), RISCV_CSR_REG(), RISCV_CONFIG_REG() and RISCV_VECTOR_CSR_REG() only receives one 'name' arg. Remove unneeded 'env' variables when applicable. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis --- target/riscv/kvm/kvm-cpu.c | 99 ++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 58 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index c91ecdfe59..fd66bc1759 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -64,23 +64,11 @@ static bool cap_has_mp_state; #define KVM_RISCV_REG_ID_U64(type, idx) (KVM_REG_RISCV | KVM_REG_SIZE_U64 = | \ type | idx) =20 -static uint64_t kvm_riscv_reg_id_ulong(CPURISCVState *env, uint64_t type, - uint64_t idx) -{ - uint64_t id =3D KVM_REG_RISCV | type | idx; - - switch (riscv_cpu_mxl(env)) { - case MXL_RV32: - id |=3D KVM_REG_SIZE_U32; - break; - case MXL_RV64: - id |=3D KVM_REG_SIZE_U64; - break; - default: - g_assert_not_reached(); - } - return id; -} +#if defined(TARGET_RISCV64) +#define KVM_RISCV_REG_ID_ULONG(type, idx) KVM_RISCV_REG_ID_U64(type, idx) +#else +#define KVM_RISCV_REG_ID_ULONG(type, idx) KVM_RISCV_REG_ID_U32(type, idx) +#endif =20 static uint64_t kvm_encode_reg_size_id(uint64_t id, size_t size_b) { @@ -103,16 +91,16 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, return kvm_encode_reg_size_id(id, size_b); } =20 -#define RISCV_CORE_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, \ +#define RISCV_CORE_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CORE, \ KVM_REG_RISCV_CORE_REG(name)) =20 -#define RISCV_CSR_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CSR, \ +#define RISCV_CSR_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CSR, \ KVM_REG_RISCV_CSR_REG(name)) =20 -#define RISCV_CONFIG_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, \ +#define RISCV_CONFIG_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, \ KVM_REG_RISCV_CONFIG_REG(name)) =20 #define RISCV_TIMER_REG(name) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_TIMER, \ @@ -122,13 +110,13 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, =20 #define RISCV_FP_D_REG(idx) KVM_RISCV_REG_ID_U64(KVM_REG_RISCV_FP_D, idx) =20 -#define RISCV_VECTOR_CSR_REG(env, name) \ - kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_VECTOR, \ +#define RISCV_VECTOR_CSR_REG(name) \ + KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_VECTOR, \ KVM_REG_RISCV_VECTOR_CSR_REG(name)) =20 #define KVM_RISCV_GET_CSR(cs, env, csr, reg) \ do { \ - int _ret =3D kvm_get_one_reg(cs, RISCV_CSR_REG(env, csr), ®); \ + int _ret =3D kvm_get_one_reg(cs, RISCV_CSR_REG(csr), ®); \ if (_ret) { \ return _ret; \ } \ @@ -136,7 +124,7 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, =20 #define KVM_RISCV_SET_CSR(cs, env, csr, reg) \ do { \ - int _ret =3D kvm_set_one_reg(cs, RISCV_CSR_REG(env, csr), ®); \ + int _ret =3D kvm_set_one_reg(cs, RISCV_CSR_REG(csr), ®); \ if (_ret) { \ return _ret; \ } \ @@ -244,7 +232,7 @@ static void kvm_riscv_update_cpu_misa_ext(RISCVCPU *cpu= , CPUState *cs) =20 /* If we're here we're going to disable the MISA bit */ reg =3D 0; - id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_ISA_EXT, + id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, misa_cfg->kvm_reg_id); ret =3D kvm_set_one_reg(cs, id, ®); if (ret !=3D 0) { @@ -430,7 +418,6 @@ static KVMCPUConfig kvm_sbi_dbcn =3D { =20 static void kvm_riscv_update_cpu_cfg_isa_ext(RISCVCPU *cpu, CPUState *cs) { - CPURISCVState *env =3D &cpu->env; uint64_t id, reg; int i, ret; =20 @@ -441,7 +428,7 @@ static void kvm_riscv_update_cpu_cfg_isa_ext(RISCVCPU *= cpu, CPUState *cs) continue; } =20 - id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_ISA_EXT, + id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, multi_ext_cfg->kvm_reg_id); reg =3D kvm_cpu_cfg_get(cpu, multi_ext_cfg); ret =3D kvm_set_one_reg(cs, id, ®); @@ -566,14 +553,14 @@ static int kvm_riscv_get_regs_core(CPUState *cs) target_ulong reg; CPURISCVState *env =3D &RISCV_CPU(cs)->env; =20 - ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(env, regs.pc), ®); + ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(regs.pc), ®); if (ret) { return ret; } env->pc =3D reg; =20 for (i =3D 1; i < 32; i++) { - uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, i); + uint64_t id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CORE, i); ret =3D kvm_get_one_reg(cs, id, ®); if (ret) { return ret; @@ -592,13 +579,13 @@ static int kvm_riscv_put_regs_core(CPUState *cs) CPURISCVState *env =3D &RISCV_CPU(cs)->env; =20 reg =3D env->pc; - ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(env, regs.pc), ®); + ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(regs.pc), ®); if (ret) { return ret; } =20 for (i =3D 1; i < 32; i++) { - uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, i); + uint64_t id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CORE, i); reg =3D env->gpr[i]; ret =3D kvm_set_one_reg(cs, id, ®); if (ret) { @@ -796,26 +783,26 @@ static int kvm_riscv_get_regs_vector(CPUState *cs) return 0; } =20 - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vstart), ®); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vstart), ®); if (ret) { return ret; } env->vstart =3D reg; =20 - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vl), ®); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vl), ®); if (ret) { return ret; } env->vl =3D reg; =20 - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vtype), ®); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vtype), ®); if (ret) { return ret; } env->vtype =3D reg; =20 if (kvm_v_vlenb.supported) { - ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vlenb), ®= ); + ret =3D kvm_get_one_reg(cs, RISCV_VECTOR_CSR_REG(vlenb), ®); if (ret) { return ret; } @@ -853,26 +840,26 @@ static int kvm_riscv_put_regs_vector(CPUState *cs) } =20 reg =3D env->vstart; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vstart), ®); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vstart), ®); if (ret) { return ret; } =20 reg =3D env->vl; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vl), ®); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vl), ®); if (ret) { return ret; } =20 reg =3D env->vtype; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vtype), ®); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vtype), ®); if (ret) { return ret; } =20 if (kvm_v_vlenb.supported) { reg =3D cpu->cfg.vlenb; - ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(env, vlenb), ®= ); + ret =3D kvm_set_one_reg(cs, RISCV_VECTOR_CSR_REG(vlenb), ®); =20 for (int i =3D 0; i < 32; i++) { /* @@ -951,25 +938,24 @@ static void kvm_riscv_destroy_scratch_vcpu(KVMScratch= CPU *scratch) =20 static void kvm_riscv_init_machine_ids(RISCVCPU *cpu, KVMScratchCPU *kvmcp= u) { - CPURISCVState *env =3D &cpu->env; struct kvm_one_reg reg; int ret; =20 - reg.id =3D RISCV_CONFIG_REG(env, mvendorid); + reg.id =3D RISCV_CONFIG_REG(mvendorid); reg.addr =3D (uint64_t)&cpu->cfg.mvendorid; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); if (ret !=3D 0) { error_report("Unable to retrieve mvendorid from host, error %d", r= et); } =20 - reg.id =3D RISCV_CONFIG_REG(env, marchid); + reg.id =3D RISCV_CONFIG_REG(marchid); reg.addr =3D (uint64_t)&cpu->cfg.marchid; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); if (ret !=3D 0) { error_report("Unable to retrieve marchid from host, error %d", ret= ); } =20 - reg.id =3D RISCV_CONFIG_REG(env, mimpid); + reg.id =3D RISCV_CONFIG_REG(mimpid); reg.addr =3D (uint64_t)&cpu->cfg.mimpid; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); if (ret !=3D 0) { @@ -984,7 +970,7 @@ static void kvm_riscv_init_misa_ext_mask(RISCVCPU *cpu, struct kvm_one_reg reg; int ret; =20 - reg.id =3D RISCV_CONFIG_REG(env, isa); + reg.id =3D RISCV_CONFIG_REG(isa); reg.addr =3D (uint64_t)&env->misa_ext_mask; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); =20 @@ -1001,11 +987,10 @@ static void kvm_riscv_init_misa_ext_mask(RISCVCPU *c= pu, static void kvm_riscv_read_cbomz_blksize(RISCVCPU *cpu, KVMScratchCPU *kvm= cpu, KVMCPUConfig *cbomz_cfg) { - CPURISCVState *env =3D &cpu->env; struct kvm_one_reg reg; int ret; =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, cbomz_cfg->kvm_reg_id); reg.addr =3D (uint64_t)kvmconfig_get_cfg_addr(cpu, cbomz_cfg); ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); @@ -1019,7 +1004,6 @@ static void kvm_riscv_read_cbomz_blksize(RISCVCPU *cp= u, KVMScratchCPU *kvmcpu, static void kvm_riscv_read_multiext_legacy(RISCVCPU *cpu, KVMScratchCPU *kvmcpu) { - CPURISCVState *env =3D &cpu->env; uint64_t val; int i, ret; =20 @@ -1027,7 +1011,7 @@ static void kvm_riscv_read_multiext_legacy(RISCVCPU *= cpu, KVMCPUConfig *multi_ext_cfg =3D &kvm_multi_ext_cfgs[i]; struct kvm_one_reg reg; =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_ISA_EXT, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, multi_ext_cfg->kvm_reg_id); reg.addr =3D (uint64_t)&val; ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); @@ -1159,7 +1143,7 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) =20 for (i =3D 0; i < ARRAY_SIZE(kvm_multi_ext_cfgs); i++) { multi_ext_cfg =3D &kvm_multi_ext_cfgs[i]; - reg_id =3D kvm_riscv_reg_id_ulong(&cpu->env, KVM_REG_RISCV_ISA_EXT, + reg_id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_ISA_EXT, multi_ext_cfg->kvm_reg_id); reg_search =3D bsearch(®_id, reglist->reg, reglist->n, sizeof(uint64_t), uint64_cmp); @@ -1338,12 +1322,11 @@ void kvm_arch_init_irq_routing(KVMState *s) =20 static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, CPUState *cs) { - CPURISCVState *env =3D &cpu->env; target_ulong reg; uint64_t id; int ret; =20 - id =3D RISCV_CONFIG_REG(env, mvendorid); + id =3D RISCV_CONFIG_REG(mvendorid); /* * cfg.mvendorid is an uint32 but a target_ulong will * be written. Assign it to a target_ulong var to avoid @@ -1355,13 +1338,13 @@ static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, = CPUState *cs) return ret; } =20 - id =3D RISCV_CONFIG_REG(env, marchid); + id =3D RISCV_CONFIG_REG(marchid); ret =3D kvm_set_one_reg(cs, id, &cpu->cfg.marchid); if (ret !=3D 0) { return ret; } =20 - id =3D RISCV_CONFIG_REG(env, mimpid); + id =3D RISCV_CONFIG_REG(mimpid); ret =3D kvm_set_one_reg(cs, id, &cpu->cfg.mimpid); =20 return ret; @@ -1911,7 +1894,7 @@ void riscv_kvm_cpu_finalize_features(RISCVCPU *cpu, E= rror **errp) if (cpu->cfg.ext_zicbom && riscv_cpu_option_set(kvm_cbom_blocksize.name)) { =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, kvm_cbom_blocksize.kvm_reg_id); reg.addr =3D (uint64_t)&val; ret =3D ioctl(kvmcpu.cpufd, KVM_GET_ONE_REG, ®); @@ -1930,7 +1913,7 @@ void riscv_kvm_cpu_finalize_features(RISCVCPU *cpu, E= rror **errp) if (cpu->cfg.ext_zicboz && riscv_cpu_option_set(kvm_cboz_blocksize.name)) { =20 - reg.id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CONFIG, + reg.id =3D KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_CONFIG, kvm_cboz_blocksize.kvm_reg_id); reg.addr =3D (uint64_t)&val; ret =3D ioctl(kvmcpu.cpufd, KVM_GET_ONE_REG, ®); --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597009; cv=none; d=zohomail.com; s=zohoarc; b=e0JWLm7mNXwE7WgABKWcph/V6xov1q+pPOAZa7dLjmsVYP0BZwS/CITRaDEksGCUBzb7NEF0casX9DiFV9lwW+px+/7ATgLhMrd9K1XcwGG7yhUPtK/NAejKntMHu70fh+gUXbE8pMjqcsMX1oHKi1IASag9N3bkvhfFklkrakE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597009; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JhsGzjCzZNMLuckp1D05NC/RrQtQo2C3Pqgvn64jC2w=; b=A2FbhUTwgrgVgpc/8Wm0o7RTdKy/iFAIa8iqhyWumGohtpYiRFxmEBVFC3jFRo17re/DZ5EfA+nmx/xNDoBWwxI7Y3rA5fvHG++rSOFK0/56Hpjz4qnNI8Y7fs8hNNYIDpIP9gucCc0Dw3WmutQVj/x7Z+w0Dbbvw4Y+tEvTy+o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745597009023749.7743038432017; Fri, 25 Apr 2025 09:03:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVg-0006NH-EK; Fri, 25 Apr 2025 12:02:40 -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 1u8LVU-00060A-2V for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:28 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVR-0008Mj-Un for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:27 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-af9925bbeb7so1867344a12.3 for ; Fri, 25 Apr 2025 09:02:24 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596943; x=1746201743; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JhsGzjCzZNMLuckp1D05NC/RrQtQo2C3Pqgvn64jC2w=; b=Px9Qf6TjA5HlfKEbkv6SO1OdgwHYcmePVg2y9yX6G9oww3BPjC96CbmbJJiUkrg71K sHOo7XhSbGPRaMyAkJ7+NB+wpKUgSY/vpxT05ehgZ9UenlRfQ3GV60io2bmszbCcH1On 2ODEsyBSCiBiM9pfCxaej3vXK0WuCBxuTWzP1fA2jfTrgOyjcmUK4/MQnGp+NSsrqAEI 0ySaUYi+Xq1kjynEMQcrJ0UZq7nXAZ3s2hiD1V6Nks4wb7qmGrc9suyF6jCxoJS36MpL dDLfKPVZLZQ/QAibXHJccDoEiRrVw1BPrBCKzMyKBGrLfGCxrhhusmlKrTHNBiBR9S53 cvvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596943; x=1746201743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JhsGzjCzZNMLuckp1D05NC/RrQtQo2C3Pqgvn64jC2w=; b=t7Ss6ZxCgUmeCGcVVpTpEHOLp2e/vCD1ygK+hppxPZDVpxsW0RyW93kYL9UFWeIaaT W6YGYN6OyAvhvYW5LAssMZnV8DIYQzL4/tDFFau+iYbAGSI7EcKpzyMyDc1FfdTxjj0H eRodSmbPjCJkMPOCpYdRil6xN52SYn0wQsRi5be99Oj0EITiS8C4lziYEE5+R070jxxi tokNhfSq2BX1gg0/3ERuEm2E6MN42Mr9noO2Lj3rdibUQ/NWqPYKL6uoMI/2/JNNm3SQ 2RYKIIAsXf0SPAaQ343G6ZLzQNrMncsf3AxiqrF6Tp3xTwxKwhy3WDq6po/fSZfO4nNS HLsA== X-Gm-Message-State: AOJu0YyjPXXmOWzLa/66Cmoxdnc1Qny2duY0OGcJK7AeLd+rzm3v1dyN 98QnwnGj0rdZqW0w+gRM8egDF30TeDqeB2HWrBnRImBDvzCfmvUOrbXnLLEjtkc5sWiXnmyIdoq S X-Gm-Gg: ASbGncu90MxruYlPVO0TAFw1HO34zuawTvMK/p09t5AsQGPLqgjssHwNKCTNClVM2lp Iny4qa4ZbxbKmwgMRjeaQN+S0RgksJsuigZVhpeoi0YWYuZ92VCEp7QK3kTwaHF7/SjjsnhEWg0 /94TwqGWjH2pT2FVDOyh1iLOwAV4fFtgoE4fF+ZDMxY8U2K5LWSg4SBRuhC/ISTm3pFLMvgzNBj jx4ikBtWencYNUEjDS/IxvyW/VNsDich/d3LPx3qCa+CSbqltZbjYWKQNTFfg8RxSiDvb6wbEo6 lpaTnS8zNumK7xql1mXW7UszUT4TZEYiJK7chJlYiUKnx+0fzdwHxCAWFA007L0/X8ra X-Google-Smtp-Source: AGHT+IFcyaEjbPkygXqyM38bGO6X/O7Q0WiFM4SDaSI0+KCjBACzEhGuZ+AI8Qyzl1jBF5gD25MUNg== X-Received: by 2002:a17:90a:e70b:b0:2ff:4f04:4266 with SMTP id 98e67ed59e1d1-30a01399551mr136496a91.23.1745596943215; Fri, 25 Apr 2025 09:02:23 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 5/9] target/riscv/kvm: add kvm_csr_cfgs[] Date: Fri, 25 Apr 2025 13:01:59 -0300 Message-ID: <20250425160203.2774835-6-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::52d; envelope-from=dbarboza@ventanamicro.com; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597010279019100 Content-Type: text/plain; charset="utf-8" At this moment we're not checking if the host has support for any specific CSR before doing get/put regs. This will cause problems if the host KVM doesn't support it (see [1] as an example). We'll use the same approach done with the CPU extensions: read all known KVM CSRs during init() to check for availability, then read/write them if they are present. This will be made by either using get-reglist or by directly reading the CSRs. For now we'll just convert the CSRs to use a kvm_csr_cfg[] array, reusing the same KVMCPUConfig abstraction we use for extensions, and use the array in (get|put)_csr_regs() instead of manually listing them. A lot of boilerplate will be added but at least we'll automate the get/put procedure for CSRs, i.e. adding a new CSR in the future will be a matter of adding it in kvm_csr_regs[] and everything else will be taken care of. Despite all the code changes no behavioral change is made. [1] https://lore.kernel.org/qemu-riscv/CABJz62OfUDHYkQ0T3rGHStQprf1c7_E0qBL= bLKhfv=3D+jb0SYAw@mail.gmail.com/ Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Acked-by: Alistair Francis --- target/riscv/cpu.h | 1 + target/riscv/kvm/kvm-cpu.c | 121 ++++++++++++++++++++++++++----------- 2 files changed, 86 insertions(+), 36 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 679f417336..f5a60d0c52 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -79,6 +79,7 @@ const char *riscv_get_misa_ext_name(uint32_t bit); const char *riscv_get_misa_ext_description(uint32_t bit); =20 #define CPU_CFG_OFFSET(_prop) offsetof(struct RISCVCPUConfig, _prop) +#define ENV_CSR_OFFSET(_csr) offsetof(CPURISCVState, _csr) =20 typedef struct riscv_cpu_profile { struct riscv_cpu_profile *u_parent; diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index fd66bc1759..f881e7eb5d 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -114,22 +114,6 @@ static uint64_t kvm_riscv_vector_reg_id(RISCVCPU *cpu, KVM_RISCV_REG_ID_ULONG(KVM_REG_RISCV_VECTOR, \ KVM_REG_RISCV_VECTOR_CSR_REG(name)) =20 -#define KVM_RISCV_GET_CSR(cs, env, csr, reg) \ - do { \ - int _ret =3D kvm_get_one_reg(cs, RISCV_CSR_REG(csr), ®); \ - if (_ret) { \ - return _ret; \ - } \ - } while (0) - -#define KVM_RISCV_SET_CSR(cs, env, csr, reg) \ - do { \ - int _ret =3D kvm_set_one_reg(cs, RISCV_CSR_REG(csr), ®); \ - if (_ret) { \ - return _ret; \ - } \ - } while (0) - #define KVM_RISCV_GET_TIMER(cs, name, reg) \ do { \ int ret =3D kvm_get_one_reg(cs, RISCV_TIMER_REG(name), ®); \ @@ -251,6 +235,53 @@ static void kvm_riscv_update_cpu_misa_ext(RISCVCPU *cp= u, CPUState *cs) } } =20 +#define KVM_CSR_CFG(_name, _env_prop, reg_id) \ + {.name =3D _name, .offset =3D ENV_CSR_OFFSET(_env_prop), \ + .kvm_reg_id =3D reg_id} + +static KVMCPUConfig kvm_csr_cfgs[] =3D { + KVM_CSR_CFG("sstatus", mstatus, RISCV_CSR_REG(sstatus)), + KVM_CSR_CFG("sie", mie, RISCV_CSR_REG(sie)), + KVM_CSR_CFG("stvec", stvec, RISCV_CSR_REG(stvec)), + KVM_CSR_CFG("sscratch", sscratch, RISCV_CSR_REG(sscratch)), + KVM_CSR_CFG("sepc", sepc, RISCV_CSR_REG(sepc)), + KVM_CSR_CFG("scause", scause, RISCV_CSR_REG(scause)), + KVM_CSR_CFG("stval", stval, RISCV_CSR_REG(stval)), + KVM_CSR_CFG("sip", mip, RISCV_CSR_REG(sip)), + KVM_CSR_CFG("satp", satp, RISCV_CSR_REG(satp)), +}; + +static void *kvmconfig_get_env_addr(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) +{ + return (void *)&cpu->env + csr_cfg->offset; +} + +static uint32_t kvm_cpu_csr_get_u32(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) +{ + uint32_t *val32 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + return *val32; +} + +static uint64_t kvm_cpu_csr_get_u64(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) +{ + uint64_t *val64 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + return *val64; +} + +static void kvm_cpu_csr_set_u32(RISCVCPU *cpu, KVMCPUConfig *csr_cfg, + uint32_t val) +{ + uint32_t *val32 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + *val32 =3D val; +} + +static void kvm_cpu_csr_set_u64(RISCVCPU *cpu, KVMCPUConfig *csr_cfg, + uint64_t val) +{ + uint64_t *val64 =3D kvmconfig_get_env_addr(cpu, csr_cfg); + *val64 =3D val; +} + #define KVM_EXT_CFG(_name, _prop, _reg_id) \ {.name =3D _name, .offset =3D CPU_CFG_OFFSET(_prop), \ .kvm_reg_id =3D _reg_id} @@ -598,34 +629,52 @@ static int kvm_riscv_put_regs_core(CPUState *cs) =20 static int kvm_riscv_get_regs_csr(CPUState *cs) { - CPURISCVState *env =3D &RISCV_CPU(cs)->env; + RISCVCPU *cpu =3D RISCV_CPU(cs); + uint64_t reg; + int i, ret; + + for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; =20 - KVM_RISCV_GET_CSR(cs, env, sstatus, env->mstatus); - KVM_RISCV_GET_CSR(cs, env, sie, env->mie); - KVM_RISCV_GET_CSR(cs, env, stvec, env->stvec); - KVM_RISCV_GET_CSR(cs, env, sscratch, env->sscratch); - KVM_RISCV_GET_CSR(cs, env, sepc, env->sepc); - KVM_RISCV_GET_CSR(cs, env, scause, env->scause); - KVM_RISCV_GET_CSR(cs, env, stval, env->stval); - KVM_RISCV_GET_CSR(cs, env, sip, env->mip); - KVM_RISCV_GET_CSR(cs, env, satp, env->satp); + ret =3D kvm_get_one_reg(cs, csr_cfg->kvm_reg_id, ®); + if (ret) { + return ret; + } + + if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { + kvm_cpu_csr_set_u32(cpu, csr_cfg, reg); + } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { + kvm_cpu_csr_set_u64(cpu, csr_cfg, reg); + } else { + g_assert_not_reached(); + } + } =20 return 0; } =20 static int kvm_riscv_put_regs_csr(CPUState *cs) { - CPURISCVState *env =3D &RISCV_CPU(cs)->env; + RISCVCPU *cpu =3D RISCV_CPU(cs); + uint64_t reg; + int i, ret; + + for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; + + if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { + reg =3D kvm_cpu_csr_get_u32(cpu, csr_cfg); + } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { + reg =3D kvm_cpu_csr_get_u64(cpu, csr_cfg); + } else { + g_assert_not_reached(); + } =20 - KVM_RISCV_SET_CSR(cs, env, sstatus, env->mstatus); - KVM_RISCV_SET_CSR(cs, env, sie, env->mie); - KVM_RISCV_SET_CSR(cs, env, stvec, env->stvec); - KVM_RISCV_SET_CSR(cs, env, sscratch, env->sscratch); - KVM_RISCV_SET_CSR(cs, env, sepc, env->sepc); - KVM_RISCV_SET_CSR(cs, env, scause, env->scause); - KVM_RISCV_SET_CSR(cs, env, stval, env->stval); - KVM_RISCV_SET_CSR(cs, env, sip, env->mip); - KVM_RISCV_SET_CSR(cs, env, satp, env->satp); + ret =3D kvm_set_one_reg(cs, csr_cfg->kvm_reg_id, ®); + if (ret) { + return ret; + } + } =20 return 0; } --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597004; cv=none; d=zohomail.com; s=zohoarc; b=Td62AUJ67h7uFXXMND1r+9lcelQPAQRER60ZSqoxqPfB8b3MCQ/Yigfp8h0ATzOt/n05E5U5bzjzjhNWLXT1EIdIMKKY0QPsk+jXwlg2+KX1TTUqRnNoN0SivXaJx51LIAJNFIxkUzQgwjlM8y3VEbKVjhOxw1iCzBgbDFBWAYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597004; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R37KMDljb4CsAfrDdBRy5Wnf5bfrROiq1X3f4Wy4iUE=; b=MApijJZc01HOY0fpmEgTsO/qeTwWHNao26dql/WzkkpF3fMJNlqvaCOG3FX8xbnWEWsxIs36ED8dyIdbxtY8qPY8UcKpjcwmJYYR/mAtNHg+tZxX8OCWlA5zeZ5EVRnBGHKRerSi4GaqfBMY+g2ekmz4Lbbkrxg9m+xV1btMFsE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745597004468902.8859590608816; Fri, 25 Apr 2025 09:03:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVe-0006LP-Qg; Fri, 25 Apr 2025 12:02:38 -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 1u8LVW-00065S-IA for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:30 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVU-0008NC-I1 for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:30 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-b061a775ac3so2387127a12.0 for ; Fri, 25 Apr 2025 09:02:28 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596947; x=1746201747; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R37KMDljb4CsAfrDdBRy5Wnf5bfrROiq1X3f4Wy4iUE=; b=LpRpnF5Ah/c7cmbFjVanNU51ikJ6lgRIyvF3xPMbrOvgEaHGZqRSwD0L5qpbmg55+G 6meIOwRahJC9+8Ipc4ZZvdL/P4FW8CTXQ6r8mUhZ1mucoHkk4av5wBPZuA9kyrPBbAch CMzflNI6d6yg7/v8+HpN32eAvdHHzbh/B/b7/ELC1pV86hmHrcSwaN5yDszp32w+t+H6 7xb109XFh5csw8LdKcnyGtnEMWYFn+wmcEM73OvfNmHshLViAzVBb2QDRHNt/IoHR6og fXg8rem4DJM7GQV27fVJPKIGf4Az8Nhn2/h4AbWgCohlKDpoyA2jaxX5cHNb0tNqS+9K /Rlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596947; x=1746201747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R37KMDljb4CsAfrDdBRy5Wnf5bfrROiq1X3f4Wy4iUE=; b=svTLnblsmwHDwTfbcRJzq3rccFZNws0XA8p4bcaT9pPZyPAdQC3jwvFo7OPgvJR5l3 gz2ti7cYyMZl1VuSGHQjFvdmng3gWwb/kTS+0XUKQy990a+aJFiWqHzyI1gYhozKwnbJ Gd+HL2+ohv/QV1VuHmkzZuHlgw7QVmylslkbZMmKvTjojCnA7AkSXxp1Gz3kA9ZtwoV7 +i4qZJBWGIEniFE9C9fuHG91yOvDI7a1f2Pe2Y/6MiIqUFxTMG767cFK8JQdDKz5lN01 4yhCJgmqB83GCpxwlXMzaPxhj6hLEU28HNTkUWcep/jiMtSGmBbDeUp9iePNIpUw7gZV J0qQ== X-Gm-Message-State: AOJu0YzVU3r+xWo3l0jVcAfqTisSo4pTUzR2LvoKZ+Fjp5ykeFHsSBGH xFPsJpnyDQhO54gigayHZO3f3z7XkAYCXTEMAdHtCsiE7fD1dl6AABZGiscn1EuF0j28H3RDD2n z X-Gm-Gg: ASbGncu0V6/X/JvBTeu4HfhVWmaEp2OftxdH+FrWiTeTzjibiDfq7ZxJpAAa6QP0kM6 XS42MccsKbMGyFuNYsaGivYoocRhc2zY9JVHshvchA81+7dFUR3VhmSsB3XW92nZHuXhzKe6/uJ EsVuwpj9stLAG3ynjuJfgwdh5fiEgENQQ6Tq+YqkZdggUWItIf9hmMyM5PHwBhMTndNZyCPMLsG 0bQ1dyRTWU38qKY/iTqFAQoJ6Wkm0TCo3phgO97XuJiN5S5DGpZZLKzIOc91HiWzrrXXg0EAQBu jmzQEUerYHqIqNParbW29INSkE5T9jqYLTtjtZfyTBIM9gvM514hcfynusTGLh8zMzi1 X-Google-Smtp-Source: AGHT+IHtkgcg1YoPvWFHBne9q7vGexByN+pzBCbHs1aidhBtNKK2Q9xNBIZxknLSQ9QKIcB+AMlaHw== X-Received: by 2002:a17:90b:4f:b0:2ff:72f8:3708 with SMTP id 98e67ed59e1d1-30a0133b154mr206192a91.17.1745596946317; Fri, 25 Apr 2025 09:02:26 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza , Andrea Bolognani Subject: [PATCH v3 6/9] target/riscv/kvm: do not read unavailable CSRs Date: Fri, 25 Apr 2025 13:02:00 -0300 Message-ID: <20250425160203.2774835-7-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::52a; envelope-from=dbarboza@ventanamicro.com; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597005749019000 Content-Type: text/plain; charset="utf-8" [1] reports that commit 4db19d5b21 broke a KVM guest running kernel 6.6. This happens because the kernel does not know 'senvcfg', making it unable to boot because QEMU is reading/wriiting it without any checks. After converting the CSRs to do "automated" get/put reg procedures in the previous patch we can now scan for availability. Two functions are created: - kvm_riscv_read_csr_cfg_legacy() will check if the CSR exists by brute forcing KVM_GET_ONE_REG in each one of them, interpreting an EINVAL return as indication that the CSR isn't available. This will be use in absence of KVM_GET_REG_LIST; - kvm_riscv_read_csr_cfg() will use the existing result of get_reg_list to check if the CSRs ids are present. kvm_riscv_init_multiext_cfg() is now kvm_riscv_init_cfg() to reflect that the function is also dealing with CSRs. [1] https://lore.kernel.org/qemu-riscv/CABJz62OfUDHYkQ0T3rGHStQprf1c7_E0qBL= bLKhfv=3D+jb0SYAw@mail.gmail.com/ Fixes: 4db19d5b21 ("target/riscv/kvm: add missing KVM CSRs") Reported-by: Andrea Bolognani Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones --- target/riscv/kvm/kvm-cpu.c | 62 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index f881e7eb5d..1ce747d047 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -636,6 +636,10 @@ static int kvm_riscv_get_regs_csr(CPUState *cs) for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; =20 + if (!csr_cfg->supported) { + continue; + } + ret =3D kvm_get_one_reg(cs, csr_cfg->kvm_reg_id, ®); if (ret) { return ret; @@ -662,6 +666,10 @@ static int kvm_riscv_put_regs_csr(CPUState *cs) for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; =20 + if (!csr_cfg->supported) { + continue; + } + if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint32_t)) { reg =3D kvm_cpu_csr_get_u32(cpu, csr_cfg); } else if (KVM_REG_SIZE(csr_cfg->kvm_reg_id) =3D=3D sizeof(uint64_= t)) { @@ -1090,6 +1098,32 @@ static void kvm_riscv_read_multiext_legacy(RISCVCPU = *cpu, } } =20 +static void kvm_riscv_read_csr_cfg_legacy(KVMScratchCPU *kvmcpu) +{ + uint64_t val; + int i, ret; + + for (i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; + struct kvm_one_reg reg; + + reg.id =3D csr_cfg->kvm_reg_id; + reg.addr =3D (uint64_t)&val; + ret =3D ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®); + if (ret !=3D 0) { + if (errno =3D=3D EINVAL) { + csr_cfg->supported =3D false; + } else { + error_report("Unable to read KVM CSR %s: %s", + csr_cfg->name, strerror(errno)); + exit(EXIT_FAILURE); + } + } else { + csr_cfg->supported =3D true; + } + } +} + static int uint64_cmp(const void *a, const void *b) { uint64_t val1 =3D *(const uint64_t *)a; @@ -1146,7 +1180,26 @@ static void kvm_riscv_read_vlenb(RISCVCPU *cpu, KVMS= cratchCPU *kvmcpu, } } =20 -static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu, KVMScratchCPU *kvmc= pu) +static void kvm_riscv_read_csr_cfg(struct kvm_reg_list *reglist) +{ + struct kvm_reg_list *reg_search; + uint64_t reg_id; + + for (int i =3D 0; i < ARRAY_SIZE(kvm_csr_cfgs); i++) { + KVMCPUConfig *csr_cfg =3D &kvm_csr_cfgs[i]; + + reg_id =3D csr_cfg->kvm_reg_id; + reg_search =3D bsearch(®_id, reglist->reg, reglist->n, + sizeof(uint64_t), uint64_cmp); + if (!reg_search) { + continue; + } + + csr_cfg->supported =3D true; + } +} + +static void kvm_riscv_init_cfg(RISCVCPU *cpu, KVMScratchCPU *kvmcpu) { g_autofree struct kvm_reg_list *reglist =3D NULL; KVMCPUConfig *multi_ext_cfg; @@ -1163,7 +1216,9 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) * (EINVAL). Use read_legacy() in this case. */ if (errno =3D=3D EINVAL) { - return kvm_riscv_read_multiext_legacy(cpu, kvmcpu); + kvm_riscv_read_multiext_legacy(cpu, kvmcpu); + kvm_riscv_read_csr_cfg_legacy(kvmcpu); + return; } else if (errno !=3D E2BIG) { /* * E2BIG is an expected error message for the API since we @@ -1226,6 +1281,7 @@ static void kvm_riscv_init_multiext_cfg(RISCVCPU *cpu= , KVMScratchCPU *kvmcpu) } =20 kvm_riscv_check_sbi_dbcn_support(cpu, reglist); + kvm_riscv_read_csr_cfg(reglist); } =20 static void riscv_init_kvm_registers(Object *cpu_obj) @@ -1239,7 +1295,7 @@ static void riscv_init_kvm_registers(Object *cpu_obj) =20 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_cfg(cpu, &kvmcpu); =20 kvm_riscv_destroy_scratch_vcpu(&kvmcpu); } --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597032; cv=none; d=zohomail.com; s=zohoarc; b=bZpx9zDQEdjvecx7Qwc88zKfJbYsoq9yriulXiX5GEEie9bfKc217ouvJRMIjAs21kT8ZBwU7XCYP1tAqLDrNP1ief+f0Vm0XTzhj6lCDD8PgsatX0KrzIVtGuRb4BfKdEqm/2immHJgS4EIoIPn4rKr/bO7/GZBYwnQSYMVSpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597032; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sqkSXWmlAzXCmkQApAbF+YpwERfG9A2hRBSgef/JTFs=; b=dM1t/fO7h2gg6/7cdTO516yPjnDNc1r62u6qWTA0S51ee6WbQwJb/iCPGcjXsvv/LiIkTJQs9L3w1EKt03j68bG13Irwct9TJKh73lawXbjPAE1duk0n+cFNWXy+mFe9KV04rdWjWDwklKLT5zecxMH4a9s1xQ4f7EUmFL+xpGs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 174559703219373.29960745392418; Fri, 25 Apr 2025 09:03:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVg-0006PN-Qc; Fri, 25 Apr 2025 12:02:40 -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 1u8LVa-0006BW-1m for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:34 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVX-0008Nn-90 for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:33 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-306b6ae4fb3so2679090a91.1 for ; Fri, 25 Apr 2025 09:02:30 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596949; x=1746201749; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sqkSXWmlAzXCmkQApAbF+YpwERfG9A2hRBSgef/JTFs=; b=WczjmJcwMu9WGjhf/SRMJiMHM7L8cJncT7JogBqukUdY8442M71aSwGabZiHnCAdlu Ow1fA9yxW0Adf3dyQWJ/Z1ZuBnYCPckUsyEX3hKT+1eD3/hcR4sogsg71dEmg/DqFaoS AJ+RR9vR3ijPqFFg6PCf0BugASYs+ePn4Cw1hop17AIg0BZnCw0gILMIwVS6mFMxJwhq Gxofr9FB5grUCzaCi/59L+27vQ9wwigyiTZ5oDghAhLesqxQPXUD3aY9jVgg2tevdHsM I09C4IdpIO5uEVx+o7wHNJZoa3crWfK0xhR6V8ylnyHqZ48GnTiO1lPihjjKI1zWUEcd 4m2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596949; x=1746201749; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sqkSXWmlAzXCmkQApAbF+YpwERfG9A2hRBSgef/JTFs=; b=E8N8oAHW5jDJxgDGhIK6TuVNnLgP/T57yMPd2a1tiHHE5PZxmWw+Hfi8C72+fYTORR irkZ6/vEF1HM5/9ZqLavqMMx+1bGE+43qfD+KpdaF+lrL/SC36ns/uMbPXdveToFRAYk nxFg01NhiCOJh1FTDVnPzZVpR/36wrVv5jMMhhATfYGIL1NnhtZIJqVfnolcr52aOUll nRcMoPQuzhhxaa5MsgV3QjMTtbZQA0B/v4NYkKqEHKhHjMah1ZSPp4ZWyDhJ/nngFwr2 LOHgx/tP3J/16fP8lltysozhOM2pTmZCrUuE4apVLR3ojYHmy/HeA6+T4RbA5aLcbSgK 2zDQ== X-Gm-Message-State: AOJu0YyY4E4MwcijuU6FyNJJG6Z6E9lyCkvsUl7wDaw+F2urgejh/XDF me5hHV2GRWHa53UZj84qRaF4bgYPa9w8P5HIUezkCReYIwUBi12WwHmpaxy8x7pWKBgj6eOTaX8 V X-Gm-Gg: ASbGncs8KVLyFwi1KrCjTObRUX37aIA0M4DbTzcH0D/YY/gCNIAQx4mXBS5oGFrTcKB G4QbNICmDTN5wtfWE5vGMUJeQ20xZhNdLfkkg7/E2VqP0lt68sHVQc42yOzl+OwyLGI5NjP8nYp Y4KW44/g5WeqtXHVnnmlnD5OmogG1YB9gBX2xP8CijiDdV4HBSQbH/qYIFyLjQd6bw0BA2zQ3vx nDg8Acqh6Y9xJNfVvtytesRgRHta+LsXQPxOsWcajWIFktp0Z3U+m2RIQRIaM8St0T86j+zyL3A XBr1JwFJas13gcLjobLshDlEEqHQLxrrgqW0YHJeSY3plZnlR5dbycRmzWigtvirdNO4 X-Google-Smtp-Source: AGHT+IE4YYqmaEP3zJ1KrUTGfl5R4j13/d1L2SAgmq6sAAY9/xzl0Xgp4kB756Ixq6d56Qy8F7wMrw== X-Received: by 2002:a17:90b:574d:b0:2ff:6aa6:47a3 with SMTP id 98e67ed59e1d1-30a013b50c5mr137757a91.25.1745596949215; Fri, 25 Apr 2025 09:02:29 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 7/9] target/riscv/kvm: add senvcfg CSR Date: Fri, 25 Apr 2025 13:02:01 -0300 Message-ID: <20250425160203.2774835-8-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1030; envelope-from=dbarboza@ventanamicro.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597034320019100 Content-Type: text/plain; charset="utf-8" We're missing the senvcfg CSRs which is already present in the KVM UAPI. Reported-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones --- target/riscv/kvm/kvm-cpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 1ce747d047..5efee8adb2 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -249,6 +249,7 @@ static KVMCPUConfig kvm_csr_cfgs[] =3D { KVM_CSR_CFG("stval", stval, RISCV_CSR_REG(stval)), KVM_CSR_CFG("sip", mip, RISCV_CSR_REG(sip)), KVM_CSR_CFG("satp", satp, RISCV_CSR_REG(satp)), + KVM_CSR_CFG("senvcfg", senvcfg, RISCV_CSR_REG(senvcfg)), }; =20 static void *kvmconfig_get_env_addr(RISCVCPU *cpu, KVMCPUConfig *csr_cfg) @@ -698,6 +699,7 @@ static void kvm_riscv_reset_regs_csr(CPURISCVState *env) env->stval =3D 0; env->mip =3D 0; env->satp =3D 0; + env->senvcfg =3D 0; } =20 static int kvm_riscv_get_regs_fp(CPUState *cs) --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597095; cv=none; d=zohomail.com; s=zohoarc; b=SvHWQut3k58IGAZ/qktxUGsxNT4FMDpf1SM/S0UWNEaAPjlvyWjB6d4FxpdSuIfco56IvxJKmSU30/xH2NA1jxR/9rne5M3ahJAWRrE9rG4J22F04swtajN6IzmpgUgR7F4gFwrTFENj0CP7hntXH4V04hwBQQm832s/HeOVHYg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597095; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DsPryffvmM4Bw35hChkmngqGVooE8Lc3dsAt//9/i5o=; b=KM5OpLMMLRSxl1A54iB2i59pLU4qZVMN/lhDplIG4M9UAlR0QVPvLGWwZ12oqFHnsG+2IW+ybxPoVTxusE2WjS1IOc3KeDNXjnO//zlSqXf1wZauJ3+DaMaMxdgvcqe9amrvjtgq4SHIKl3b/kN7tfHhRQU2ek9W25886AlcMNA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745597095465124.51634998694954; Fri, 25 Apr 2025 09:04:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVi-0006RW-IJ; Fri, 25 Apr 2025 12:02:42 -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 1u8LVb-0006Fo-QG for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:35 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVa-0008OO-6R for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:35 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-3081f72c271so2429226a91.0 for ; Fri, 25 Apr 2025 09:02:33 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596952; x=1746201752; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DsPryffvmM4Bw35hChkmngqGVooE8Lc3dsAt//9/i5o=; b=QLJ+x5W+ZOaCUHWXNdUh0u2UrnUycr+19wLiJDivude4P/ughgee1HTag4Ha/YlNP/ knz4edcvHoHMQZfKEtma1rkSjQUd0NhZcYAwJPL8hJegD5PHw1LI1hwtVRJCnt097N/F tgwgxkzDxI7BHSIbVcVrte3aWFxXs6uXPFUHd1D2posqOZlZyJX6Lerak7+pFOmkz1Sl ywAg4aubvPe9qmFdeQRoB9/TCZT4Otuz+Qij2FMe3Jbzo2UAHrzTLE3I/g4CmLj1tM4e 4q7s7JaE6Ok5t3two7Z7Gy8emXdoMNIXq8NrlFuUW7MQVLQidvZh902tBpfeYHCPwI6L 607Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596952; x=1746201752; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DsPryffvmM4Bw35hChkmngqGVooE8Lc3dsAt//9/i5o=; b=gHKFZznJi2XpJDHLNisxdKPf4vbvcrO/wHWsKdDGbxf64fRO5dpHzwQ7mU2pHlkPqr oGdlA6cIRrGWj6u0gjRhItYXxQLjk0oaax43tBdUU20CGbtc2BoojGMqDTcQ8oJL2n2X 0Ej6Cu+uf6XfG82V5jsKnEdelKmkJVieNee/csdOw5oA5DQTLNP4xnJgFbFlL2Cw/2Jo VL56W/fzksTuo+MU2gFGcmdpEQAKpiOiJJQF5dXDyk0LwlQjP64HiVsr6bqJypcSHlXa tyZOj5ti9C7CfyV/mUCt5heulvONV7UGD1ILEwBz5FCgbva9BkB/W3aY2vqYXvpY4u+i c9RA== X-Gm-Message-State: AOJu0YxMy7cVf26mf7Xfquhxrivrq5UjDJqP09H5QixUpPJDoOxsmcjl MzhQN6MEit43/DHW75zygJUvyKjfQr30PHDw5LoIKVF1qLWSRuspxpx/T62Ks/StHe+OkIfiqBB h X-Gm-Gg: ASbGncuMQlToTTeMn7F+efYh87f5p6dSqMu5zdKCgdvHpgVvyvo+jI0WF+By/c4qNIZ /wjyEIvb4W4ph6QCu/ks7V2AVRE52M1z9Gqpyxo8yHQc/BtuRk5eI82xbK37GkBCcE/56Mx2hz9 HEytVa9NoLb/zKLuDWfg8SSyXiPe694HyGSN3qQcRphr/ilxDAR5JPh7N1IwPlsPqa6S0ykmxyy +IEkH5z41XxEw3Paxr0uuzTFIo3kDIuABbhkcuqnL69+U5ZTqH5PLCcFTCONoM3MLY1yc7QAMue KytfrsqtrHJzG2FxbPcG4Fs6NDr2G41gvNiSYlCrlyBNHwg5Rdk3YomhZQ4Clb++MVKo X-Google-Smtp-Source: AGHT+IHI+dRMiZS6asuQnF1TRrkz186CT+0n10sA4QcTzuw7sgQYJmdfCzLEPXfMHqt4Zk2u75qAkA== X-Received: by 2002:a17:90b:5249:b0:2f1:3355:4a8f with SMTP id 98e67ed59e1d1-30a012ed05dmr161177a91.4.1745596952116; Fri, 25 Apr 2025 09:02:32 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 8/9] target/riscv: widen scounteren to target_ulong Date: Fri, 25 Apr 2025 13:02:02 -0300 Message-ID: <20250425160203.2774835-9-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::102a; envelope-from=dbarboza@ventanamicro.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597098649019100 Content-Type: text/plain; charset="utf-8" We want to support scounteren as a KVM CSR. The KVM UAPI defines every CSR size as target_ulong, and our env->scounteren is fixed at 32 bits. The other existing cases where the property size does not match the KVM reg size happens with uint64_t properties, like 'mstatus'. When running a 32 bit CPU we'll write a 32 bit 'sstatus' KVM reg into the 64 bit 'mstatus' field. As long as we're consistent, i.e. we're always reading/writing the same words, this is ok. For scounteren, a KVM guest running in a 64 bit CPU will end up writing a 64 bit reg in a 32 bit field. This will have all sort of funny side effects in the KVM guest that we would rather avoid. Increase scounteren to target_ulong to allow KVM to read/write the scounteren CSR without any surprises. Aside from bumping the version of the RISCVCPU vmstate no other behavioral changes are expected. Signed-off-by: Daniel Henrique Barboza --- target/riscv/cpu.h | 9 ++++++++- target/riscv/machine.c | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index f5a60d0c52..66d4ddfcb4 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -400,7 +400,14 @@ struct CPUArchState { */ bool two_stage_indirect_lookup; =20 - uint32_t scounteren; + /* + * scounteren is supposed to be an uint32_t, as the spec + * says. We're using a target_ulong instead because the + * scounteren KVM CSR is defined as target_ulong in + * kvm_riscv_csr, and we want to avoid having to deal + * with an ulong reg being read/written in an uint32_t. + */ + target_ulong scounteren; uint32_t mcounteren; =20 uint32_t scountinhibit; diff --git a/target/riscv/machine.c b/target/riscv/machine.c index df2d5bad8d..f3477e153b 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -401,8 +401,8 @@ static const VMStateDescription vmstate_ssp =3D { =20 const VMStateDescription vmstate_riscv_cpu =3D { .name =3D "cpu", - .version_id =3D 10, - .minimum_version_id =3D 10, + .version_id =3D 11, + .minimum_version_id =3D 11, .post_load =3D riscv_cpu_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINTTL_ARRAY(env.gpr, RISCVCPU, 32), @@ -445,7 +445,7 @@ const VMStateDescription vmstate_riscv_cpu =3D { VMSTATE_UINTTL(env.mtval, RISCVCPU), VMSTATE_UINTTL(env.miselect, RISCVCPU), VMSTATE_UINTTL(env.siselect, RISCVCPU), - VMSTATE_UINT32(env.scounteren, RISCVCPU), + VMSTATE_UINTTL(env.scounteren, RISCVCPU), VMSTATE_UINT32(env.mcounteren, RISCVCPU), VMSTATE_UINT32(env.scountinhibit, RISCVCPU), VMSTATE_UINT32(env.mcountinhibit, RISCVCPU), --=20 2.49.0 From nobody Sat Nov 15 23:41:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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 ARC-Seal: i=1; a=rsa-sha256; t=1745597072; cv=none; d=zohomail.com; s=zohoarc; b=HxMoU/AaR/ikuMmbCdjfT8ncEbh7htVoe6t98gmqVQDjMgB8wWnThM0p3hEZZdP0+/oVNX78OXCVnjFdCLaP9VY8v6Yqg5V86LQYFIlgOFDOCd8+kEJ/AOQlIzVNg2IEndyUCKCmdaSh+ZXlk7AnxcDoyWxfx5iftmee65Q1RgI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745597072; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kATB84zbfEXPZ6YqIw/ahyT/QtK1o9FhvUc+qOMtYDE=; b=H/wg5ULX9IsksQv/G/i53S20v2LXjkGk2uhc6Vu66WS6BlPmNnlLZKyF0KucKRKl6VAm6U1GF28WXz4KXjaEiT41l4tAb3p6V/85jOzxPZKo0RdoApGZnLRFsXHZgE0pQG+jKAsDwub8HrMzX+JtowMa3JV7eC7HpySBeXi6QBk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1745597072330869.2322328988181; Fri, 25 Apr 2025 09:04:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8LVi-0006RS-HB; Fri, 25 Apr 2025 12:02:42 -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 1u8LVg-0006NX-8R for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:40 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8LVd-0008Or-F5 for qemu-devel@nongnu.org; Fri, 25 Apr 2025 12:02:39 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2ff6cf448b8so3360448a91.3 for ; Fri, 25 Apr 2025 09:02:37 -0700 (PDT) Received: from grind.dc1.ventanamicro.com ([152.234.125.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f774e534sm1820005a91.17.2025.04.25.09.02.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 09:02:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745596955; x=1746201755; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kATB84zbfEXPZ6YqIw/ahyT/QtK1o9FhvUc+qOMtYDE=; b=X2e+aAP3cSAsgLRBYY87vXDipljzve6VcZSdBPf7CL0nzSvRFjHs6ar2vtt2s/kLzZ f8NW5ljt8wTgBrHekgZcOPR4K4kZaX4OPydmD40GWGL0LNwI2IRvzSqNspC63fHtE2/L yuhnEvTKk4IyjO5mF/jpTM+hFjpO3InlRFlQ+RVWsjVQu/N/5bWKJkcJmHvQCzvm7NRw zzw72GZE2RksQHu7o4h0+C9OLmDUA7z0YAao+0qMComCNKeZfBNgHYrUyXcTaLoOOwR9 iNtiQGq9dVDPanf6XKZAGnwWLCgG50syq3tw6dxuHj7QCo4q1I5SUvOt+J2qzi+HHnAa l6dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745596955; x=1746201755; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kATB84zbfEXPZ6YqIw/ahyT/QtK1o9FhvUc+qOMtYDE=; b=wbmu/3q67EOtrLpVzUo6kRQ+gMe2dDplXNgH9dQSMNI0p38TYmv5Uh8maPSt0g4bHM ox3wDZzMK0QU2XHrdfEStORC6Lml6IkbKRWUJajNg5zJdrnVMFZF+Vim/JjX07PIxfjU sSL6whMOHvbawZmrwkuX9gxebuB3oMsr3rZ0XzDra2Lm6vcD1PXNggoHgn8G76EalPBj jwRtwE+uhi0AO52HoH7762ZyiQmAPVybob1z7QX0v3ZtTfTHJjx5vC5gcs5dsn7aVn+m pJchLJ4IOf2Fi7LRRmNM6LNYxRz5ioyfhVv38OVpjj3uSYt8ls43NyRVLEo8kAhDgnel yH8Q== X-Gm-Message-State: AOJu0YzSRHqgu3IkBK3HsP9YB3hFQa8hTJuDzkbRBXBgirdO5HHlimsF mei+vm164XguFyK5fUW/p8AE+Z7s7UAEVnGPQuvfsedvmRDJo7OGXbrvAFHbiEFDPr6p3F/tQ2x 0 X-Gm-Gg: ASbGncsiAx7qNYgk9QKeL0nrh63MBJZuY0B83aJsRvnSF+ZKFytmaRi2vV2/O39D6YN k1/eAYtLHf4mpw5jX9uvJsyweGQIjC/83rnU+zC5ur0QjS0B7mJVN7PfRAWGGdrXffNeCjrdVc7 ROnG9nFw82XwMtW4I7QMc5fOMQSSruqjiV67B/zIpy0OCFtwa5P4XfngvrZtWW6EuuuAlgk7711 E8mOEYaWuWb3C4H/lLY3Jmwfu4GdtM6RjHQXVrgnOuD/01grZXi2zxf88aWQbV7PJkc49gSugEM vraIk5g8a20FGZAb6od+6yzrKn7r4oWZgBL/jBcIuk7ncq/e+lpycL8Z4dld1Yv9WDH7 X-Google-Smtp-Source: AGHT+IFiBPB1/nKr7flUvjzktqlY1uZoC8rOxI6FN5d5DbyvlTLkm6bfBPRU+pSBtPrnB98gNrjUpg== X-Received: by 2002:a17:90b:2741:b0:2ee:c91a:acf7 with SMTP id 98e67ed59e1d1-309f7da6d24mr4486174a91.4.1745596955015; Fri, 25 Apr 2025 09:02:35 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH v3 9/9] target/riscv/kvm: add scounteren CSR Date: Fri, 25 Apr 2025 13:02:03 -0300 Message-ID: <20250425160203.2774835-10-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250425160203.2774835-1-dbarboza@ventanamicro.com> References: <20250425160203.2774835-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1036; envelope-from=dbarboza@ventanamicro.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1745597074064019000 Content-Type: text/plain; charset="utf-8" Now that CPURISCVState::scounteren is a target_ulong, add support for the scounteren KVM CSR. Reported-by: Andrew Jones Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones --- target/riscv/kvm/kvm-cpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 5efee8adb2..65d6710e4a 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -249,6 +249,7 @@ static KVMCPUConfig kvm_csr_cfgs[] =3D { KVM_CSR_CFG("stval", stval, RISCV_CSR_REG(stval)), KVM_CSR_CFG("sip", mip, RISCV_CSR_REG(sip)), KVM_CSR_CFG("satp", satp, RISCV_CSR_REG(satp)), + KVM_CSR_CFG("scounteren", scounteren, RISCV_CSR_REG(scounteren)), KVM_CSR_CFG("senvcfg", senvcfg, RISCV_CSR_REG(senvcfg)), }; =20 @@ -699,6 +700,7 @@ static void kvm_riscv_reset_regs_csr(CPURISCVState *env) env->stval =3D 0; env->mip =3D 0; env->satp =3D 0; + env->scounteren =3D 0; env->senvcfg =3D 0; } =20 --=20 2.49.0