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