Nicholas Piggin <npig...@gmail.com> writes: > From: Glenn Miles <mil...@linux.vnet.ibm.com> > > Reviewed-by: Nicholas Piggin <npig...@gmail.com> > Signed-off-by: Glenn Miles <mil...@linux.vnet.ibm.com> > Signed-off-by: Nicholas Piggin <npig...@gmail.com> > --- > target/ppc/machine.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/target/ppc/machine.c b/target/ppc/machine.c > index 6b6c31d903..731dd8df35 100644 > --- a/target/ppc/machine.c > +++ b/target/ppc/machine.c > @@ -711,6 +711,26 @@ static const VMStateDescription vmstate_reservation = { > } > }; > > +#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_offset, PowerPCCPU), > + VMSTATE_UINT64_ARRAY(env.bhrb, PowerPCCPU, BHRB_MAX_NUM_ENTRIES), > + VMSTATE_END_OF_LIST() > + } > +}; > +#endif > + > const VMStateDescription vmstate_ppc_cpu = { > .name = "cpu", > .version_id = 5, > @@ -756,6 +776,7 @@ const VMStateDescription vmstate_ppc_cpu = { > #ifdef TARGET_PPC64 > &vmstate_tm, > &vmstate_slb, > + &vmstate_bhrb,
Running some tests now that Nick re-enabled ppc for migration tests, I see that this new state breaks backward migrations: $ QTEST_TRACE="vmstate_*" \ QTEST_QEMU_BINARY_DST=../build-previous/qemu-system-ppc64 \ QTEST_QEMU_BINARY=./qemu-system-ppc64 \ ./tests/qtest/migration-test -p /ppc64/migration/precopy/tcp/plain ... vmstate_load_state_field cpu/slb:env.slb vmstate_n_elems env.slb: 64 vmstate_subsection_load cpu/slb vmstate_subsection_load_bad cpu/slb: cpu/bhrb/(prefix) vmstate_load_state_end cpu/slb end/0 vmstate_subsection_load_bad cpu: cpu/bhrb/(lookup) qemu-system-ppc64: error while loading state for instance 0x0 of device 'cpu' vmstate_downtime_checkpoint dst-precopy-loadvm-completed qemu-system-ppc64: load of migration failed: No such file or directory If you want to support backwards migration, then this needs to be fixed. Otherwise we can ignore it.