aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAvihai Horon <avihaih@nvidia.com>2023-08-02 11:14:45 +0300
committerCédric Le Goater <clg@redhat.com>2023-09-11 08:34:05 +0200
commit9d3103c81be307b3953f7e3f53ed0f742e9d786c (patch)
tree75e659dbd7c9d6fc407cc690a725b3b1a6e40525 /include
parent5485298ce0978458839a9a7f0f227f7ed64a025f (diff)
downloadqemu-9d3103c81be307b3953f7e3f53ed0f742e9d786c.zip
qemu-9d3103c81be307b3953f7e3f53ed0f742e9d786c.tar.gz
qemu-9d3103c81be307b3953f7e3f53ed0f742e9d786c.tar.bz2
sysemu: Add prepare callback to struct VMChangeStateEntry
Add prepare callback to struct VMChangeStateEntry. The prepare callback is optional and can be set by the new function qemu_add_vm_change_state_handler_prio_full() that allows setting this callback in addition to the main callback. The prepare callbacks and main callbacks are called in two separate phases: First all prepare callbacks are called and only then all main callbacks are called. The purpose of the new prepare callback is to allow all devices to run a preliminary task before calling the devices' main callbacks. This will facilitate adding P2P support for VFIO migration where all VFIO devices need to be put in an intermediate P2P quiescent state before being stopped or started by the main callback. Signed-off-by: Avihai Horon <avihaih@nvidia.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Tested-by: YangHang Liu <yanghliu@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/sysemu/runstate.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/sysemu/runstate.h b/include/sysemu/runstate.h
index 7beb29c..764a0fc 100644
--- a/include/sysemu/runstate.h
+++ b/include/sysemu/runstate.h
@@ -16,6 +16,10 @@ VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
void *opaque);
VMChangeStateEntry *qemu_add_vm_change_state_handler_prio(
VMChangeStateHandler *cb, void *opaque, int priority);
+VMChangeStateEntry *
+qemu_add_vm_change_state_handler_prio_full(VMChangeStateHandler *cb,
+ VMChangeStateHandler *prepare_cb,
+ void *opaque, int priority);
VMChangeStateEntry *qdev_add_vm_change_state_handler(DeviceState *dev,
VMChangeStateHandler *cb,
void *opaque);