On 15/10/25, Philippe Mathieu-Daudé wrote:
> On 14/10/25 22:35, Anton Johansson wrote:
> > mcontext is at most 14 bits in size with the H extension, fix to 16
> > bits. trigger_cur indexes into tdata*[RV_MAX_TRIGGERS] which holds 2
> > elements, fix to 8 bits.
> >
> > Note, the cpu/debug VMSTATE version is bumped, breaking migration from
> > older versions.
> >
> > Signed-off-by: Anton Johansson <anjo@rev.ng>
> > Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> > ---
> > target/riscv/cpu.h | 10 +++++-----
> > target/riscv/machine.c | 12 ++++++------
> > 2 files changed, 11 insertions(+), 11 deletions(-)
> >
> > diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
> > index 85ad250a8f..e404b120bc 100644
> > --- a/target/riscv/cpu.h
> > +++ b/target/riscv/cpu.h
> > @@ -466,11 +466,11 @@ struct CPUArchState {
> > target_ulong mseccfg;
> > /* trigger module */
> > - target_ulong trigger_cur;
> > - target_ulong tdata1[RV_MAX_TRIGGERS];
> > - target_ulong tdata2[RV_MAX_TRIGGERS];
> > - target_ulong tdata3[RV_MAX_TRIGGERS];
> > - target_ulong mcontext;
> > + uint16_t mcontext;
> > + uint8_t trigger_cur;
> > + uint64_t tdata1[RV_MAX_TRIGGERS];
> > + uint64_t tdata2[RV_MAX_TRIGGERS];
> > + uint64_t tdata3[RV_MAX_TRIGGERS];
> > struct CPUBreakpoint *cpu_breakpoint[RV_MAX_TRIGGERS];
> > struct CPUWatchpoint *cpu_watchpoint[RV_MAX_TRIGGERS];
> > QEMUTimer *itrigger_timer[RV_MAX_TRIGGERS];
> > diff --git a/target/riscv/machine.c b/target/riscv/machine.c
> > index 376075b2bd..e86fc58e43 100644
> > --- a/target/riscv/machine.c
> > +++ b/target/riscv/machine.c
> > @@ -239,15 +239,15 @@ static int debug_post_load(void *opaque, int version_id)
> > static const VMStateDescription vmstate_debug = {
> > .name = "cpu/debug",
> > - .version_id = 2,
> > - .minimum_version_id = 2,
> > + .version_id = 3,
> > + .minimum_version_id = 3,
> > .needed = debug_needed,
> > .post_load = debug_post_load,
> > .fields = (const VMStateField[]) {
> > - VMSTATE_UINTTL(env.trigger_cur, RISCVCPU),
> > - VMSTATE_UINTTL_ARRAY(env.tdata1, RISCVCPU, RV_MAX_TRIGGERS),
> > - VMSTATE_UINTTL_ARRAY(env.tdata2, RISCVCPU, RV_MAX_TRIGGERS),
> > - VMSTATE_UINTTL_ARRAY(env.tdata3, RISCVCPU, RV_MAX_TRIGGERS),
> > + VMSTATE_UINT8(env.trigger_cur, RISCVCPU),
> > + VMSTATE_UINT64_ARRAY(env.tdata1, RISCVCPU, RV_MAX_TRIGGERS),
> > + VMSTATE_UINT64_ARRAY(env.tdata2, RISCVCPU, RV_MAX_TRIGGERS),
> > + VMSTATE_UINT64_ARRAY(env.tdata3, RISCVCPU, RV_MAX_TRIGGERS),
>
> Pre-existing, but mcontext is not migrated. Deliberate?
>
> Otherwise:
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Since trigger data is migrated I think it is correct to also migrate
mcontext. I'll add the migration entry to this patch in v4 and maybe
Alistair or someone else can chime in.
Thanks!:)