qemu/qapi
Avihai Horon 6574232fff migration: Add switchover ack capability
Migration downtime estimation is calculated based on bandwidth and
remaining migration data. This assumes that loading of migration data in
the destination takes a negligible amount of time and that downtime
depends only on network speed.

While this may be true for RAM, it's not necessarily true for other
migrated devices. For example, loading the data of a VFIO device in the
destination might require from the device to allocate resources, prepare
internal data structures and so on. These operations can take a
significant amount of time which can increase migration downtime.

This patch adds a new capability "switchover ack" that prevents the
source from stopping the VM and completing the migration until an ACK
is received from the destination that it's OK to do so.

This can be used by migrated devices in various ways to reduce downtime.
For example, a device can send initial precopy metadata to pre-allocate
resources in the destination and use this capability to make sure that
the pre-allocation is completed before the source VM is stopped, so it
will have full effect.

This new capability relies on the return path capability to communicate
from the destination back to the source.

The actual implementation of the capability will be added in the
following patches.

Signed-off-by: Avihai Horon <avihaih@nvidia.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Tested-by: YangHang Liu <yanghliu@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
2023-06-30 06:02:51 +02:00
..
acpi.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
audio.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
authz.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
block-core.json qcow2: add discard-no-unref option 2023-06-05 13:15:42 +02:00
block-export.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
block.json block: add accounting for zone append operation 2023-05-15 08:18:10 -04:00
char.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
common.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
compat.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
control.json docs/interop: Convert qmp-spec.txt to rST 2023-05-22 10:21:01 +02:00
crypto.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
cryptodev.json spelling: information 2023-06-09 23:38:16 +03:00
cxl.json hw/cxl/events: Add injection of Memory Module Events 2023-06-23 02:54:40 -04:00
dump.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
error.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
introspect.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
job.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
machine-target.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
machine.json accel/tcg: remove CONFIG_PROFILER 2023-06-26 17:33:00 +02:00
meson.build meson: Replace CONFIG_SOFTMMU -> CONFIG_SYSTEM_ONLY 2023-06-20 10:01:30 +02:00
migration.json migration: Add switchover ack capability 2023-06-30 06:02:51 +02:00
misc-target.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
misc.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
net.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
opts-visitor.c cutils: Adjust signature of parse_uint[_full] 2023-06-02 12:27:19 -05:00
pci.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
pragma.json qapi/pragma: Tidy up comments 2022-05-16 07:31:26 +02:00
qapi-clone-visitor.c qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
qapi-dealloc-visitor.c qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
qapi-forward-visitor.c qapi: remove needless include 2022-03-22 14:46:18 +04:00
qapi-schema.json docs/interop: Convert qmp-spec.txt to rST 2023-05-22 10:21:01 +02:00
qapi-type-helpers.c monitor: introduce HumanReadableText and HMP support 2021-11-02 15:55:13 +00:00
qapi-util.c qapi: Fix stale reference to scripts/qapi.py in a comment 2022-02-28 11:39:35 +01:00
qapi-visit-core.c qapi: Factor out compat_policy_input_ok() 2021-10-29 21:27:20 +02:00
qdev.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
qmp-dispatch.c monitor: mark mixed functions that can suspend 2023-04-20 11:17:35 +02:00
qmp-event.c Replace qemu_gettimeofday() with g_get_real_time() 2022-04-06 10:50:37 +02:00
qmp-registry.c qapi: Generalize command policy checking 2021-10-29 18:24:46 +02:00
qobject-input-visitor.c include: add qemu/keyval.h 2022-04-21 17:03:51 +04:00
qobject-output-visitor.c qapi: Extend -compat to set policy for unstable interfaces 2021-10-29 21:28:01 +02:00
qom.json hostmem-file: add offset option 2023-05-23 16:47:03 +02:00
rdma.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
replay.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
rocker.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
run-state.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
sockets.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
stats.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
string-input-visitor.c qapi, qemu-options: make all parsing visitors parse boolean options the same 2020-11-04 12:00:40 -05:00
string-output-visitor.c qapi: remove needless include 2022-03-22 14:46:18 +04:00
tpm.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
trace-events qapi: Generalize struct member policy checking 2021-10-29 18:23:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
trace.json qapi: make the vcpu parameters deprecated for 8.1 2023-06-01 11:05:05 -04:00
transaction.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
ui.json ui: add egl-headless support on win32 2023-06-27 17:08:56 +02:00
virtio.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
yank.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00