[PATCH V5 00/12] fix migration of suspended runstate

Steve Sistare posted 12 patches 1 year ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1699900440-207345-1-git-send-email-steven.sistare@oracle.com
Maintainers: Stefan Berger <stefanb@linux.vnet.ibm.com>, "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Gerd Hoffmann <kraxel@redhat.com>, Stefano Stabellini <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>, Juan Quintela <quintela@redhat.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Leonardo Bras <leobras@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>
There is a newer version of this series
backends/tpm/tpm_emulator.c          |   2 +-
gdbstub/system.c                     |   2 +-
hw/usb/hcd-ehci.c                    |   2 +-
hw/usb/redirect.c                    |   2 +-
hw/xen/xen-hvm-common.c              |   2 +-
include/migration/snapshot.h         |   7 ++
include/sysemu/runstate.h            |  12 ++-
migration/migration-hmp-cmds.c       |  12 ++-
migration/migration.c                |  40 ++++---
migration/migration.h                |   1 +
migration/savevm.c                   |  41 +++----
system/cpus.c                        |  71 ++++++------
system/runstate.c                    |  13 +++
system/vl.c                          |   2 +
tests/migration/i386/Makefile        |   5 +-
tests/migration/i386/a-b-bootblock.S |  50 ++++++++-
tests/migration/i386/a-b-bootblock.h |  26 +++--
tests/qtest/migration-helpers.c      |  27 ++---
tests/qtest/migration-helpers.h      |  11 +-
tests/qtest/migration-test.c         | 202 ++++++++++++++++++++++++++---------
20 files changed, 362 insertions(+), 168 deletions(-)
[PATCH V5 00/12] fix migration of suspended runstate
Posted by Steve Sistare 1 year ago
Migration of a guest in the suspended runstate is broken.  The incoming
migration code automatically tries to wake the guest, which is wrong;
the guest should end migration in the same runstate it started.  Further,
for a restored snapshot, the automatic wakeup fails.  The runstate is
RUNNING, but the guest is not.  See the commit messages for the details.

Changes in V2:
  * simplify "start on wakeup request"
  * fix postcopy, snapshot, and background migration
  * refactor fixes for each type of migration
  * explicitly handled suspended events and runstate in tests
  * add test for postcopy and background migration

Changes in V3:
  * rebase to tip
  * fix hang in new function migrate_wait_for_dirty_mem

Changes in V4:
  * rebase to tip
  * add patch for vm_prepare_start (thanks Peter)
  * add patch to preserve cpu ticks

Changes in V5:
  * rebase to tip
  * added patches to completely stop vm in suspended state:
      cpus: refactor vm_stop
      cpus: stop vm in suspended state
  * added patch to partially resume vm in suspended state:
      cpus: start vm in suspended state
  * modified "preserve suspended ..." patches to use the above.
  * deleted patch "preserve cpu ticks if suspended".  stop ticks in
    vm_stop_force_state instead.
  * deleted patch "add runstate function".  defined new helper function
    migrate_new_runstate in "preserve suspended runstate"
  * Added some RB's, but removed other RB's because the patches changed.

Steve Sistare (12):
  cpus: refactor vm_stop
  cpus: stop vm in suspended state
  cpus: pass runstate to vm_prepare_start
  cpus: start vm in suspended state
  migration: preserve suspended runstate
  migration: preserve suspended for snapshot
  migration: preserve suspended for bg_migration
  tests/qtest: migration events
  tests/qtest: option to suspend during migration
  tests/qtest: precopy migration with suspend
  tests/qtest: postcopy migration with suspend
  tests/qtest: background migration with suspend

 backends/tpm/tpm_emulator.c          |   2 +-
 gdbstub/system.c                     |   2 +-
 hw/usb/hcd-ehci.c                    |   2 +-
 hw/usb/redirect.c                    |   2 +-
 hw/xen/xen-hvm-common.c              |   2 +-
 include/migration/snapshot.h         |   7 ++
 include/sysemu/runstate.h            |  12 ++-
 migration/migration-hmp-cmds.c       |  12 ++-
 migration/migration.c                |  40 ++++---
 migration/migration.h                |   1 +
 migration/savevm.c                   |  41 +++----
 system/cpus.c                        |  71 ++++++------
 system/runstate.c                    |  13 +++
 system/vl.c                          |   2 +
 tests/migration/i386/Makefile        |   5 +-
 tests/migration/i386/a-b-bootblock.S |  50 ++++++++-
 tests/migration/i386/a-b-bootblock.h |  26 +++--
 tests/qtest/migration-helpers.c      |  27 ++---
 tests/qtest/migration-helpers.h      |  11 +-
 tests/qtest/migration-test.c         | 202 ++++++++++++++++++++++++++---------
 20 files changed, 362 insertions(+), 168 deletions(-)

-- 
1.8.3.1