Steve Sistare <steven.sist...@oracle.com> writes: > A guest that is migrated in the suspended state automaticaly wakes and > continues execution. This is wrong; the guest should end migration in > the same state it started. The root causes is that the outgoing migration > code automatically wakes the guest, then saves the RUNNING runstate in > global_state_store(), hence the incoming migration code thinks the guest is > running and continues the guest if autostart is true. > > On the outgoing side, do not call qemu_system_wakeup_request(). That > alone fixes precopy migration, as process_incoming_migration_bh correctly > sets runstate from global_state_get_runstate(). > > On the incoming side for postcopy, do not wake the guest, and apply the > the same logic as found in precopy: if autostart and the runstate is > RUNNING, then vm_start, else merely restore the runstate. > > In both cases, if the restored state is SUSPENDED, then a later wakeup > request will resume the guest, courtesy of the previous "start on wakeup" > patch. > > Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
Reviewed-by: Fabiano Rosas <faro...@suse.de>