qemu-cr16/qapi
Juraj Marcin 7b842fe354 migration: Introduce POSTCOPY_DEVICE state
Currently, when postcopy starts, the source VM starts switchover and
sends a package containing the state of all non-postcopiable devices.
When the destination loads this package, the switchover is complete and
the destination VM starts. However, if the device state load fails or
the destination side crashes, the source side is already in
POSTCOPY_ACTIVE state and cannot be recovered, even when it has the most
up-to-date machine state as the destination has not yet started.

This patch introduces a new POSTCOPY_DEVICE state which is active while
the destination machine is loading the device state, is not yet running,
and the source side can be resumed in case of a migration failure.
Return-path is required for this state to function, otherwise it will be
skipped in favor of POSTCOPY_ACTIVE.

To transition from POSTCOPY_DEVICE to POSTCOPY_ACTIVE, the source
side uses a PONG message that is a response to a PING message processed
just before the POSTCOPY_RUN command that starts the destination VM.
Thus, this feature is effective even if the destination side does not
yet support this new state.

Signed-off-by: Juraj Marcin <jmarcin@redhat.com>
Link: https://lore.kernel.org/r/20251103183301.3840862-9-jmarcin@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
2025-11-03 16:04:10 -05:00
..
accelerator.json monitor: generalize query-mshv/"info mshv" to query-accelerators/"info accelerators" 2025-10-14 11:03:59 +02:00
acpi-hest.json qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
acpi.json qapi: add cross-references to acpi.json 2025-07-14 12:52:46 +02:00
audio.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
authz.json qapi: add cross-references to authz.json 2025-07-14 12:52:46 +02:00
block-core.json block: Expose block limits for images in QMP 2025-10-29 12:10:10 +01:00
block-export.json qapi: add cross-references to block layer 2025-07-14 12:55:17 +02:00
block.json qapi: add cross-references to block layer 2025-07-14 12:55:17 +02:00
char.json chardev: remove deprecated 'reconnect' option 2025-10-28 16:49:34 +03:00
common.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
compat.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
control.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
crypto.json qapi: add cross-references to crypto.json 2025-07-14 12:55:49 +02:00
cryptodev.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
cxl.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
dump.json qapi: Add more cross-references 2025-07-29 14:51:20 +02:00
ebpf.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
error.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
introspect.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
job.json qapi: add cross-references to job.json 2025-07-14 12:57:27 +02:00
machine-common.json qapi: add cross-references to Machine core 2025-07-14 12:58:13 +02:00
machine-s390x.json qapi/machine-s390x: add QAPI event SCLP_CPI_INFO_AVAILABLE 2025-10-21 15:46:41 +02:00
machine.json hw/uefi/ovmf-log: add maxsize parameter 2025-10-22 11:32:07 +02:00
meson.build qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
migration.json migration: Introduce POSTCOPY_DEVICE state 2025-11-03 16:04:10 -05:00
misc-arm.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
misc-i386.json qapi: Add more cross-references 2025-07-29 14:51:20 +02:00
misc.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
net.json net/stream: remove deprecated 'reconnect' option 2025-10-28 16:49:34 +03:00
opts-visitor.c qapi: Inline and remove QERR_INVALID_PARAMETER definition 2024-04-24 09:50:58 +02:00
pci.json qapi: add cross-references to pci.json 2025-07-14 12:58:13 +02:00
pragma.json qapi: Document QCryptodevBackendServiceType 2024-10-02 09:10:01 +02:00
qapi-clone-visitor.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
qapi-dealloc-visitor.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
qapi-forward-visitor.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qapi-schema.json qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
qapi-type-helpers.c qapi: New strv_from_str_list() 2024-03-04 07:12:40 +01:00
qapi-util.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qapi-visit-core.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qdev.json qapi: add cross-references to QOM 2025-07-14 12:58:13 +02:00
qmp-dispatch.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qmp-event.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
qmp-registry.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qobject-input-visitor.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qobject-output-visitor.c qapi: change 'unsigned special_features' to 'uint64_t features' 2025-02-10 15:45:04 +01:00
qom.json qom: qom-list-get 2025-07-16 16:51:21 +02:00
replay.json qapi: add cross-references to replay.json 2025-07-14 12:58:13 +02:00
rocker.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
run-state.json qapi: Add more cross-references 2025-07-29 14:51:20 +02:00
sockets.json qapi: Add more cross-references 2025-07-29 14:51:20 +02:00
stats.json qapi: add cross-references to misc modules 2025-07-14 12:58:13 +02:00
string-input-visitor.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
string-output-visitor.c string-output-visitor: Fix (pseudo) struct handling 2024-01-26 11:16:58 +01:00
tpm.json qapi: remove trivial "Returns:" sections 2025-07-14 12:35:29 +02:00
trace-events qapi: Generalize struct member policy checking 2021-10-29 18:23:09 +02:00
trace.h
trace.json qapi: rephrase return docs to avoid type name 2025-07-14 12:35:39 +02:00
transaction.json qapi: add cross-references to block layer 2025-07-14 12:55:17 +02:00
uefi.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
ui.json QAPI patches patches for 2025-07-14 2025-07-16 07:07:30 -04:00
vfio.json docs/sphinx: remove special parsing for freeform sections 2025-07-14 10:08:27 +02:00
virtio.json qmp: update virtio features map to support extended features 2025-10-04 10:50:37 -04:00
yank.json qapi: add cross-references to yank.json 2025-07-14 12:58:13 +02:00