Allow cpr-reboot for vfio if the guest is in the suspended runstate. The
guest drivers' suspend methods flush outstanding requests and re-initialize
the devices, and thus there is no device state to save and restore. The
user is responsible for suspending the guest before initiating cpr, such as
by issuing guest-suspend-ram to the qemu guest agent.
Most of the patches in this series enhance migration notifiers so they can
return an error status and message. The last few patches register a notifier
for vfio that returns an error if the guest is not suspended.
Changes in V3:
* update to tip, add RB's
* replace MigrationStatus with new enum MigrationEventType
* simplify migrate_fd_connect error recovery
* support vfio iommufd containers
* add patches:
migration: stop vm for cpr
migration: update cpr-reboot description
Changes in V4:
* rebase to tip, add RB's
* add patch to prevent options such as precopy from being used with cpr.
migration: options incompatible with cpr
* refactor subroutines in "stop vm for cpr"
* simplify "notifier error checking" patch by restricting that only
notifiers for MIG_EVENT_PRECOPY_SETUP may return an error.
* doc that a fail event may be sent without a prior setup event
Steve Sistare (14):
notify: pass error to notifier with return
migration: remove error from notifier data
migration: convert to NotifierWithReturn
migration: MigrationEvent for notifiers
migration: remove postcopy_after_devices
migration: MigrationNotifyFunc
migration: per-mode notifiers
migration: refactor migrate_fd_connect failures
migration: notifier error checking
migration: stop vm for cpr
vfio: register container for cpr
vfio: allow cpr-reboot migration if suspended
migration: update cpr-reboot description
migration: options incompatible with cpr
hw/net/virtio-net.c | 13 +--
hw/vfio/common.c | 2 +-
hw/vfio/container.c | 11 ++-
hw/vfio/cpr.c | 39 +++++++++
hw/vfio/iommufd.c | 6 ++
hw/vfio/meson.build | 1 +
hw/vfio/migration.c | 15 ++--
hw/vfio/trace-events | 2 +-
hw/virtio/vhost-user.c | 10 +--
hw/virtio/virtio-balloon.c | 3 +-
include/hw/vfio/vfio-common.h | 5 +-
include/hw/vfio/vfio-container-base.h | 1 +
include/hw/virtio/virtio-net.h | 2 +-
include/migration/misc.h | 47 +++++++++--
include/qemu/notify.h | 8 +-
migration/migration.c | 148 +++++++++++++++++++++++-----------
migration/migration.h | 4 -
migration/postcopy-ram.c | 3 +-
migration/postcopy-ram.h | 1 -
migration/ram.c | 3 +-
net/vhost-vdpa.c | 14 ++--
qapi/migration.json | 37 ++++++---
roms/seabios-hppa | 2 +-
ui/spice-core.c | 17 ++--
util/notify.c | 5 +-
25 files changed, 275 insertions(+), 124 deletions(-)
create mode 100644 hw/vfio/cpr.c
--
1.8.3.1