qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Steven Sistare <steven.sistare@oracle.com>
To: Peter Xu <peterx@redhat.com>
Cc: "Juan Quintela" <quintela@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Leonardo Bras" <leobras@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [PATCH V8 00/12] fix migration of suspended runstate
Date: Wed, 13 Dec 2023 10:35:33 -0500	[thread overview]
Message-ID: <a9ddc1b2-d4fc-44de-857b-2aeb35fa0925@oracle.com> (raw)
In-Reply-To: <1702481421-375368-1-git-send-email-steven.sistare@oracle.com>

Hi Peter, all have RB's, with all i's dotted and t's crossed - steve

On 12/13/2023 10:30 AM, Steve Sistare wrote:
> 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,
> after saving a snapshot in the suspended state and loading it, the vm_start
> 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.
> 
> Changes in V6:
>   * all vm_stop calls completely stop the suspended state
>   * refactored and updated the "cpus" patches
>   * simplified the "preserve suspended" patches
>   * added patch "bootfile per vm"
> 
> Changes in V7:
>   * rebase to tip, add RB-s
>   * fix backwards compatibility for global_state.vm_was_suspended
>   * delete vm_prepare_start state argument, and rename patch
>     "pass runstate to vm_prepare_start" to
>     "check running not RUN_STATE_RUNNING"
>   * drop patches:
>       tests/qtest: bootfile per vm
>       tests/qtest: background migration with suspend
>   * rename runstate_is_started to runstate_is_live
>   * move wait_for_suspend in tests
> 
> Changes in V8:
>   * rebase to tip
>   * add RB's
>   * add comment for runstate_is_live
>   * simplify global_state - the needed function, and its use of vm_was_suspended
> 
> Steve Sistare (12):
>   cpus: vm_was_suspended
>   cpus: stop vm in suspended runstate
>   cpus: check running not RUN_STATE_RUNNING
>   cpus: vm_resume
>   migration: propagate suspended runstate
>   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
> 
>  backends/tpm/tpm_emulator.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            |  20 ++++
>  migration/global_state.c             |  47 +++++----
>  migration/migration-hmp-cmds.c       |   8 +-
>  migration/migration.c                |  15 +--
>  migration/savevm.c                   |  23 +++--
>  qapi/misc.json                       |  10 +-
>  system/cpus.c                        |  47 +++++++--
>  system/runstate.c                    |   9 ++
>  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         | 181 +++++++++++++++++++++++++----------
>  20 files changed, 352 insertions(+), 144 deletions(-)
> 


  parent reply	other threads:[~2023-12-13 15:36 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-13 15:30 [PATCH V8 00/12] fix migration of suspended runstate Steve Sistare
2023-12-13 15:30 ` [PATCH V8 01/12] cpus: vm_was_suspended Steve Sistare
2023-12-13 15:30 ` [PATCH V8 02/12] cpus: stop vm in suspended runstate Steve Sistare
2023-12-13 15:32   ` Steven Sistare
2023-12-22 12:44     ` Markus Armbruster
2023-12-13 15:30 ` [PATCH V8 03/12] cpus: check running not RUN_STATE_RUNNING Steve Sistare
2023-12-13 15:30 ` [PATCH V8 04/12] cpus: vm_resume Steve Sistare
2023-12-13 15:30 ` [PATCH V8 05/12] migration: propagate suspended runstate Steve Sistare
2023-12-13 15:30 ` [PATCH V8 06/12] migration: preserve " Steve Sistare
2023-12-13 15:30 ` [PATCH V8 07/12] migration: preserve suspended for snapshot Steve Sistare
2023-12-13 15:30 ` [PATCH V8 08/12] migration: preserve suspended for bg_migration Steve Sistare
2023-12-13 15:30 ` [PATCH V8 09/12] tests/qtest: migration events Steve Sistare
2023-12-13 15:30 ` [PATCH V8 10/12] tests/qtest: option to suspend during migration Steve Sistare
2023-12-13 15:30 ` [PATCH V8 11/12] tests/qtest: precopy migration with suspend Steve Sistare
2023-12-13 15:30 ` [PATCH V8 12/12] tests/qtest: postcopy " Steve Sistare
2023-12-13 15:35 ` Steven Sistare [this message]
2023-12-18  5:14   ` [PATCH V8 00/12] fix migration of suspended runstate Peter Xu
2023-12-18 14:43     ` Steven Sistare
2023-12-20 14:52     ` Anthony PERARD
2023-12-20 15:15       ` Steven Sistare

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a9ddc1b2-d4fc-44de-857b-2aeb35fa0925@oracle.com \
    --to=steven.sistare@oracle.com \
    --cc=berrange@redhat.com \
    --cc=farosas@suse.de \
    --cc=leobras@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).