* Steve Sistare (steven.sist...@oracle.com) wrote: > After cprload, the guest console misbehaves. You must type 8 characters > before any are echoed to the terminal. Qemu was not sending interrupts > to the guest because the QEMU_CLOCK_VIRTUAL timers_state.cpu_clock_offset > was bad. The offset is usually updated at cprsave time by the path > > save_cpr_snapshot() > vm_stop() > do_vm_stop() > if (runstate_is_running()) > cpu_disable_ticks(); > timers_state.cpu_clock_offset = cpu_get_clock_locked(); > > However, if the guest is in RUN_STATE_SUSPENDED, then cpu_disable_ticks is > not called. Further, the earlier transition to suspended in > qemu_system_suspend did not disable ticks. To fix, call cpu_disable_ticks > from save_cpr_snapshot. > > Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
Are you saying this is really a more generic bug with migrating when suspended and we should fix this anyway? Dave > --- > migration/savevm.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/migration/savevm.c b/migration/savevm.c > index f101039..00f493b 100644 > --- a/migration/savevm.c > +++ b/migration/savevm.c > @@ -2729,6 +2729,11 @@ void save_cpr_snapshot(const char *file, const char > *mode, Error **errp) > return; > } > > + /* Update timers_state before saving. Suspend did not so do. */ > + if (runstate_check(RUN_STATE_SUSPENDED)) { > + cpu_disable_ticks(); > + } > + > vm_stop(RUN_STATE_SAVE_VM); > > ret = qemu_savevm_state(f, op, errp); > -- > 1.8.3.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK