On Wed Sep 13, 2023 at 6:25 AM AEST, Glenn Miles wrote: > Adds migration support for Branch History Rolling > Buffer (BHRB) internal state. > > Signed-off-by: Glenn Miles <mil...@linux.vnet.ibm.com> > --- > target/ppc/machine.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/target/ppc/machine.c b/target/ppc/machine.c > index b195fb4dc8..89146969c8 100644 > --- a/target/ppc/machine.c > +++ b/target/ppc/machine.c > @@ -314,6 +314,7 @@ static int cpu_post_load(void *opaque, int version_id) > > if (tcg_enabled()) { > pmu_mmcr01a_updated(env); > + hreg_bhrb_filter_update(env); > } > > return 0; > @@ -670,6 +671,27 @@ static const VMStateDescription vmstate_compat = { > } > }; > > +#ifdef TARGET_PPC64 > +static bool bhrb_needed(void *opaque) > +{ > + PowerPCCPU *cpu = opaque; > + return (cpu->env.flags & POWERPC_FLAG_BHRB) != 0; > +} > + > +static const VMStateDescription vmstate_bhrb = { > + .name = "cpu/bhrb", > + .version_id = 1, > + .minimum_version_id = 1, > + .needed = bhrb_needed, > + .fields = (VMStateField[]) { > + VMSTATE_UINTTL(env.bhrb_num_entries, PowerPCCPU),
Maybe don't need bhrb_num_entries since target machine should have the same? > + VMSTATE_UINTTL(env.bhrb_offset, PowerPCCPU), > + VMSTATE_UINT64_ARRAY(env.bhrb, PowerPCCPU, BHRB_MAX_NUM_ENTRIES), Is it possible to migrate only bhrb_num_entries items? Wants a VARRAY AFAIKS but there is no VARRAY_UINT64? Since all sizes are the same 32 now, would it be possible to turn it into a VARRAY sometime later if supposing a new CPU changed to a different size, and would the wire format for the VARRAY still be compatible with this fixed size array, or does a VARRAY look different I wonder? Thanks, Nick