On Mon, Feb 09, 2026 at 04:21:09PM -0300, Daniel Henrique Barboza wrote: > > > On 2/3/2026 9:55 AM, Chao Liu wrote: > > Hi, > > > > Per Daniel's review feedback, this v5 series is based on Alistair's > > riscv-to-apply.next branch [3]. It depends on patches 1-5 of Max Chou's > > "Add Zvfbfa extension support" v2 series (not included; apply them > > first) [2]. > > > > It is based on RISC-V Debug Specification 1.0 [1]. > > > > It introduces the sdext/sdtrig config bits, DCSR/DPC/DSCRATCH state, > > Debug Mode enter/leave helpers, DRET, EBREAK entry, single-step, and > > trigger action=debug mode. > > > > To reduce review load, this series focuses on the Sdext features first. > > The Debug Module (DM) and related flows will follow in a later series. > > > We still need a reviewed-by in patch 1 (that I can't give, after all it's my > patch hehe). > > Aside from that the series LGTM. It's not sensible to think that we're going > to push upstream an error/bug free extension. The code will need more > mileage with more people using it and we'll fix what is needed along the > way. We have a long time until the release anyway. > > My vote is to queue this up (we'll need Max's series queued first). When > this lands upstream we'll go back to the Server SoC reference board and get > that upstreamed too. > I agree with your points. I’ve also added a Reviewed-by sign-off to patch1.
Thanks, Chao > > Thanks, > Daniel > > > > > > Changes in v5: > > - Patch 2: removed redundant `cpu->cfg.ext_sdext = false;` in > > riscv_cpu_init() since it's already set to false in MULTI_EXT_CFG_BOOL. > > (Daniel) > > - Patch 7: changed LOG_UNIMP to LOG_GUEST_ERROR for invalid trigger > > action=debug mode when Sdext is not enabled. LOG_UNIMP is reserved > > for unimplemented features, while LOG_GUEST_ERROR is for invalid > > guest actions. (Daniel) > > > > Changes in v4: > > - Fixed linux-user build errors: moved debug_mode/dcsr/dpc/dscratch > > fields inside #ifndef CONFIG_USER_ONLY block in cpu.h, and wrapped > > all code using these fields with proper guards. (Daniel) > > - Updated dependency from single patch (patch 5 only) to patches 1-5 > > of Max Chou's "Add Zvfbfa extension support" v2 series to avoid > > compilation errors. > > > > Changes in v3: > > - Rebase onto Alistair's riscv-to-apply.next branch. > > - Depend on Max Chou's patch "target/riscv: Use the tb->cs_bqse as > > the extend tb flags." (not included; apply it first) [2]. > > - Patch 2: default sdext to false in riscv_cpu_extensions[]. > > > > Changes in v2: > > - Drop the RHCT expected AML update from this series. > > - Replace the split sdext/sdtrig config bits patch with deprecating the > > 'debug' CPU property. > > - Rebase and update patch subjects to target/riscv prefix. > > > > Changes in v1: > > - Debug Mode entry/exit updates DCSR/DPC and restores execution via DRET. > > - EBREAK honors DCSR ebreak bits and enters Debug Mode when enabled. > > - Single-step uses DCSR.STEP with a TB flag and a helper at TB exit. > > It references Max Chou's patch "target/riscv: Use the tb->cs_bqse as > > the extend tb flags." [2]. > > - Sdtrig supports action=debug mode for mcontrol/mcontrol6 and reports > > inst-count triggers in tinfo. > > > > Differences vs Debug Spec (known gaps): > > - No Debug Module (no DMI, dmcontrol/dmstatus, haltreq/resumereq). > > - No debug ROM, program buffer, abstract commands, or SBA. > > - Resume is modeled by leaving Debug Mode at cpu_exec_enter. > > - Step/exception ordering is simplified: if the stepped instruction > > traps, the normal exception is taken and Debug Mode is not forced. > > - Several DCSR fields are not fully modeled (stopcount/stoptime, etc). > > > > Roadmap (next stage, DM focus): > > 1) Add a DM core with DMI access and hart state tracking. > > 2) Implement halt/resume handshake and move Debug Mode transitions > > under DM control. > > 3) Add debug ROM, program buffer, and abstract commands for GPR/CSR > > and memory access. > > 4) Add SBA if required by tooling. > > 5) Tighten ordering rules for step/exception/trigger priorities. > > > > References: > > [1] https://github.com/riscv/riscv-debug-spec/releases/tag/1.0 > > [2] > > https://lore.kernel.org/qemu-devel/[email protected]/ > > [3] https://github.com/alistair23/qemu/tree/riscv-to-apply.next > > > > Thanks, > > Chao > > > > Chao Liu (6): > > target/riscv: add sdext debug CSRs state > > target/riscv: add sdext Debug Mode helpers > > target/riscv: add dret instruction > > target/riscv: add sdext enter Debug Mode on ebreak > > target/riscv: add sdext single-step support > > target/riscv: add sdtrig trigger action=debug mode > > > > Daniel Henrique Barboza (1): > > target/riscv: deprecate 'debug' CPU property > > > > docs/about/deprecated.rst | 7 + > > include/exec/translation-block.h | 4 +- > > target/riscv/cpu.c | 59 +++++++- > > target/riscv/cpu.h | 9 ++ > > target/riscv/cpu_bits.h | 33 +++++ > > target/riscv/cpu_cfg_fields.h.inc | 3 +- > > target/riscv/cpu_helper.c | 90 ++++++++++++ > > target/riscv/csr.c | 128 +++++++++++++++++- > > target/riscv/debug.c | 58 +++++++- > > target/riscv/helper.h | 3 + > > target/riscv/insn32.decode | 1 + > > .../riscv/insn_trans/trans_privileged.c.inc | 24 ++++ > > target/riscv/machine.c | 44 ++++-- > > target/riscv/op_helper.c | 70 ++++++++++ > > target/riscv/tcg/tcg-cpu.c | 21 ++- > > target/riscv/translate.c | 16 ++- > > 16 files changed, 545 insertions(+), 25 deletions(-) > > > > -- > > 2.53.0 > > >
