All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] target/riscv: prevent abrupt abortion on unassigned value write to tdata
@ 2026-07-29 23:00 Abhigyan Kumar
  2026-08-14 13:14 ` abh
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Abhigyan Kumar @ 2026-07-29 23:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-riscv, Alistair Francis, Weiwei Li, Daniel Henrique Barboza,
	Liu Zhiwei, Chao Liu, Palmer Dabbelt, Abhigyan Kumar

tdata_csr_write is approachable by guest programs. In case of unassigned
values written to a tdata CSR in debug mode, the switch-case falls
through straight to default causing an immediate abort. The risc-v spec
says:

    All tdata registers follow write-any-read-legal semantics. If a debugger
    writes an unsupported configuration, the register will read back a value
    that is supported (which may simply be a disabled trigger). This means
    that a debugger must always read back values it writes to tdata
    registers, unless it already knows what is supported.

This fix correctly ensures that the WARL behaviour of tdata CSRs.

Fixes: a42bd001 ("target/riscv: debug: Determine the trigger type from
tdata1.type")
Signed-off-by: Abhigyan Kumar <314abh@gmail.com>
---
 target/riscv/tcg/debug.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/riscv/tcg/debug.c b/target/riscv/tcg/debug.c
index 3c0fe7010..ae493235d 100644
--- a/target/riscv/tcg/debug.c
+++ b/target/riscv/tcg/debug.c
@@ -913,7 +913,8 @@ void tdata_csr_write(CPURISCVState *env, int tdata_index, target_ulong val)
                       trigger_type);
         break;
     default:
-        g_assert_not_reached();
+        qemu_log_mask(LOG_GUEST_ERROR, "trigger type: %d is unassigned\n",
+                trigger_type);
     }
 }
 
-- 
2.55.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-09-03  4:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29 23:00 [PATCH] target/riscv: prevent abrupt abortion on unassigned value write to tdata Abhigyan Kumar
2026-08-14 13:14 ` abh
2026-09-03  4:31 ` Alistair Francis
2026-09-03  4:57 ` Alistair Francis

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.