From nobody Mon Sep 28 01:15:06 2026 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; dmarc=pass(p=none dis=none) header.from=ispras.ru ARC-Seal: i=1; a=rsa-sha256; t=1785673090; cv=none; d=zohomail.com; s=zohoarc; b=Ql0NZro1pfT4Sd47Lqma7e4nE/QId4HyZ+1f6KvpJ3go93UExRfJ18ec/HfHKf/IGMZwFe2YUuGzJuBywiTRl+2GQFcLlckdI435llYQW/F7Wvyatnx9cX+RBNKinJpBwWra+hsuKh2mg1sp8jZY6xZj6uP6giMtuebYss3sfbw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785673090; 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=vunbb94ED8cx/ncK3P5gD8vDOmHoWA8kRt9ImI/RdEo=; b=LIqQITaiijTmMUwD9QvB8UbJlwX2K1X4ZwXCQFRbDS08MqSfrd4B0j5gvIg532/adw3Ft0zR3ErGqIAwPEsHLwq5qP4kWBM2Zy9CvNppX5peRKWFxZ+Qu2UqPIjSJ7KI7qfwpShbzpFgmWBKH1jkCfZ96GB1mQxI/rUdnkEyR2o= 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1785673090163277.235752108832; Sun, 2 Aug 2026 05:18:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wqV8B-0007Kp-A9; Sun, 02 Aug 2026 08:17:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wqJdl-0006RU-VL; Sat, 01 Aug 2026 20:01:18 -0400 Received: from mail.ispras.ru ([83.149.199.84]) by eggs.gnu.org with esmtps (TLS1.2:DHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wqJdi-0006vU-QP; Sat, 01 Aug 2026 20:01:17 -0400 Received: from DESKTOP-J3VFOUN.localdomain (unknown [62.217.189.53]) by mail.ispras.ru (Postfix) with ESMTPSA id E682E406E9AC; Sun, 2 Aug 2026 00:01:09 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.ispras.ru E682E406E9AC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ispras.ru; s=default; t=1785628870; bh=vunbb94ED8cx/ncK3P5gD8vDOmHoWA8kRt9ImI/RdEo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MVfLocwxbNP0GBFjr4fbeADlB96/dC90mOmIUnaIlvAhv72Z7aiV+9MUDkZLoHgFf cDYpKJjw23oAERnARLPnUFLadxwKniMNrNhU9a3x58bVvuXWutx+Wlbu6flHbwLWE8 1eBOuvqV0l6xLB4s8inanfccnwQv4SCf3M0RnRMw= From: Ivan Efremov To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, palmer@dabbelt.com, farosas@suse.de, lvivier@redhat.com, Ivan Efremov Subject: [PATCH 1/2] target/riscv: Fix seed CSR sign extension Date: Sun, 2 Aug 2026 03:00:47 +0300 Message-ID: <20260802000048.691333-2-nendensu@ispras.ru> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260802000048.691333-1-nendensu@ispras.ru> References: <20260802000048.691333-1-nendensu@ispras.ru> 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=lists1p.gnu.org; Received-SPF: pass client-ip=83.149.199.84; envelope-from=nendensu@ispras.ru; helo=mail.ispras.ru 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 02 Aug 2026 08:17:15 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @ispras.ru) X-ZM-MESSAGEID: 1785673091551158500 Content-Type: text/plain; charset="utf-8" The SEED_OPST_* macros expanded to int expressions. When bit 31 was present, converting a CSR seed value to target_ulong on RV64 sign extended the value and incorrectly set the upper 32 bits. Make the SEED_OPST_* constants unsigned so that CSR values are zero extended on RV64. Fixes: 77442380ecbe ("target/riscv: rvk: add CSR support for Zkr") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/4121 Signed-off-by: Ivan Efremov --- target/riscv/cpu_bits.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 3f146a43fe..c01050ce2b 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -1086,11 +1086,11 @@ typedef enum CTRType { (HVICTL_VTI | HVICTL_IID | HVICTL_IPRIOM | HVICTL_IPRIO) =20 /* seed CSR bits */ -#define SEED_OPST (0b11 << 30) -#define SEED_OPST_BIST (0b00 << 30) -#define SEED_OPST_WAIT (0b01 << 30) -#define SEED_OPST_ES16 (0b10 << 30) -#define SEED_OPST_DEAD (0b11 << 30) +#define SEED_OPST (0b11U << 30) +#define SEED_OPST_BIST (0b00U << 30) +#define SEED_OPST_WAIT (0b01U << 30) +#define SEED_OPST_ES16 (0b10U << 30) +#define SEED_OPST_DEAD (0b11U << 30) /* PMU related bits */ #define MIE_LCOFIE (1 << IRQ_PMU_OVF) =20 --=20 2.43.0 From nobody Mon Sep 28 01:15:06 2026 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; dmarc=pass(p=none dis=none) header.from=ispras.ru ARC-Seal: i=1; a=rsa-sha256; t=1785673083; cv=none; d=zohomail.com; s=zohoarc; b=XyahsIGqDZcOvj4/qm2Tyv86nHphu0furpsSOKVCrVjRhuk9TrwImawxDTB3A1cBijuDC7yGJZukhHx1LHTCK7hYxQvfpXZaz49iN7er9upGv5cj3XqKyCofQaW/BYwEhGCPaN97EojYmlp66nxN4aY8M/oMNwg9Xfs9QnN/Yhg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785673083; 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=OeUtX3MFYx5OI4D5LkUpJUOeDd9GdM2ff8ea3tnflKE=; b=TXdzj3BvgCzN9I/HBaDMbzEn3V7uJ76YetZnVZxNQuM1jIUnDCrWWGTIAjc9kFA2cD4sbsO5fdV5m8cUGeJ9w8ewwPCyURCmX7a0r7SlLlGys0FoEuy8aTQAjbYAbAHEQLxMfww37KEFGP63YAlbhTQiZATQJTgwxE24i83gxLA= 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1785673083435558.0523213500547; Sun, 2 Aug 2026 05:18:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wqV89-0007IJ-NZ; Sun, 02 Aug 2026 08:17:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wqJdk-0006R2-SY; Sat, 01 Aug 2026 20:01:16 -0400 Received: from mail.ispras.ru ([83.149.199.84]) by eggs.gnu.org with esmtps (TLS1.2:DHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wqJdi-0006vX-QM; Sat, 01 Aug 2026 20:01:16 -0400 Received: from DESKTOP-J3VFOUN.localdomain (unknown [62.217.189.53]) by mail.ispras.ru (Postfix) with ESMTPSA id D7E4B406E9AE; Sun, 2 Aug 2026 00:01:10 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.ispras.ru D7E4B406E9AE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ispras.ru; s=default; t=1785628870; bh=OeUtX3MFYx5OI4D5LkUpJUOeDd9GdM2ff8ea3tnflKE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MAccEOhtdzC4XkOR3TnKRr1XZS3+dFYJOPpRLTT2IOv7f6tK6qBaTTKCDPD0G1ATV qUKrEVPLUQ7iSEU2M1UCs65WKLDv8C/BS1BLY/wSM+TWfrQP7WcHNsV0P/w+7K6N/p FB9925NMuVhPGEM9BQnkvYBIOvm2rEPIZuLJWBjU= From: Ivan Efremov To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, palmer@dabbelt.com, farosas@suse.de, lvivier@redhat.com, Ivan Efremov Subject: [PATCH 2/2] tests/qtest: Add seed CSR zero extension test Date: Sun, 2 Aug 2026 03:00:48 +0300 Message-ID: <20260802000048.691333-3-nendensu@ispras.ru> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260802000048.691333-1-nendensu@ispras.ru> References: <20260802000048.691333-1-nendensu@ispras.ru> 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=lists1p.gnu.org; Received-SPF: pass client-ip=83.149.199.84; envelope-from=nendensu@ispras.ru; helo=mail.ispras.ru 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 02 Aug 2026 08:17:13 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @ispras.ru) X-ZM-MESSAGEID: 1785673086191158500 Content-Type: text/plain; charset="utf-8" Add a qtest that reads the seed CSR on RV64 machine with Zkr support and verifies that the upper 32 bits are clear. Signed-off-by: Ivan Efremov --- tests/qtest/riscv-csr-test.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/qtest/riscv-csr-test.c b/tests/qtest/riscv-csr-test.c index bb1b0ffed3..7479a5c5bc 100644 --- a/tests/qtest/riscv-csr-test.c +++ b/tests/qtest/riscv-csr-test.c @@ -20,6 +20,12 @@ #define CSR_MVENDORID 0xf11 #define CSR_MISELECT 0x350 =20 +#define CSR_SEED 0x015 + +#define SEED_OPST_MASK (UINT64_C(0x3) << 30) +#define SEED_OPST_ES16 (UINT64_C(0x2) << 30) +#define SEED_OPST_DEAD (UINT64_C(0x3) << 30) + static void run_test_csr(void) { uint64_t res; @@ -46,12 +52,32 @@ static void run_test_csr(void) qtest_quit(qts); } =20 +static void run_test_seed_csr(void) +{ + uint64_t val =3D 0; + uint64_t opst; + QTestState *qts; + + qts =3D qtest_init("-machine virt -cpu tt-ascalon"); + + qtest_csr_call(qts, "get_csr", 0, CSR_SEED, &val); + + opst =3D val & SEED_OPST_MASK; + g_assert_true(opst =3D=3D SEED_OPST_ES16 || + opst =3D=3D SEED_OPST_DEAD); + + g_assert_cmphex(val >> 32, =3D=3D, 0); + + qtest_quit(qts); +} + int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); =20 if (qtest_has_machine("virt")) { qtest_add_func("/cpu/csr", run_test_csr); + qtest_add_func("/cpu/csr/seed", run_test_seed_csr); } =20 return g_test_run(); --=20 2.43.0