Message ID | 20230623125707.323517-6-npiggin@gmail.com |
---|---|
State | New |
Headers | show |
Series | ppc: fix larx migration, fix record-replay | expand |
Reviewed-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> On 23.06.2023 15:57, Nicholas Piggin wrote: > Timebase save uses a random number for a legacy vmstate field, which > makes rr snapshot loading unbalanced. The easiest way to deal with this > is just to skip the rng if record-replay is active. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > hw/ppc/ppc.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c > index 82e4408c5c..7b7db30f95 100644 > --- a/hw/ppc/ppc.c > +++ b/hw/ppc/ppc.c > @@ -32,6 +32,7 @@ > #include "qemu/main-loop.h" > #include "qemu/error-report.h" > #include "sysemu/kvm.h" > +#include "sysemu/replay.h" > #include "sysemu/runstate.h" > #include "kvm_ppc.h" > #include "migration/vmstate.h" > @@ -933,8 +934,14 @@ static void timebase_save(PPCTimebase *tb) > return; > } > > - /* not used anymore, we keep it for compatibility */ > - tb->time_of_the_day_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST); > + if (replay_mode == REPLAY_MODE_NONE) { > + /* not used anymore, we keep it for compatibility */ > + tb->time_of_the_day_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST); > + } else { > + /* simpler for record-replay to avoid this event, compat not needed */ > + tb->time_of_the_day_ns = 0; > + } > + > /* > * tb_offset is only expected to be changed by QEMU so > * there is no need to update it from KVM here
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 82e4408c5c..7b7db30f95 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -32,6 +32,7 @@ #include "qemu/main-loop.h" #include "qemu/error-report.h" #include "sysemu/kvm.h" +#include "sysemu/replay.h" #include "sysemu/runstate.h" #include "kvm_ppc.h" #include "migration/vmstate.h" @@ -933,8 +934,14 @@ static void timebase_save(PPCTimebase *tb) return; } - /* not used anymore, we keep it for compatibility */ - tb->time_of_the_day_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST); + if (replay_mode == REPLAY_MODE_NONE) { + /* not used anymore, we keep it for compatibility */ + tb->time_of_the_day_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST); + } else { + /* simpler for record-replay to avoid this event, compat not needed */ + tb->time_of_the_day_ns = 0; + } + /* * tb_offset is only expected to be changed by QEMU so * there is no need to update it from KVM here
Timebase save uses a random number for a legacy vmstate field, which makes rr snapshot loading unbalanced. The easiest way to deal with this is just to skip the rng if record-replay is active. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- hw/ppc/ppc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)