mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
vfio/migration: Multifd device state transfer support - received buffers queuing
The multifd received data needs to be reassembled since device state packets sent via different multifd channels can arrive out-of-order. Therefore, each VFIO device state packet carries a header indicating its position in the stream. The raw device state data is saved into a VFIOStateBuffer for later in-order loading into the device. The last such VFIO device state packet should have VFIO_DEVICE_STATE_CONFIG_STATE flag set and carry the device config state. Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Link: https://lore.kernel.org/qemu-devel/e3bff515a8d61c582b94b409eb12a45b1a143a69.1741124640.git.maciej.szmigiero@oracle.com [ clg: - Reordered savevm_vfio_handlers - Added load_state_buffer documentation ] Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
6bcffb1cad
commit
3228d311ab
5 changed files with 178 additions and 0 deletions
|
@ -76,6 +76,10 @@ VFIO implements the device hooks for the iterative approach as follows:
|
|||
* A ``load_state`` function that loads the config section and the data
|
||||
sections that are generated by the save functions above.
|
||||
|
||||
* A ``load_state_buffer`` function that loads the device state and the device
|
||||
config that arrived via multifd channels.
|
||||
It's used only in the multifd mode.
|
||||
|
||||
* ``cleanup`` functions for both save and load that perform any migration
|
||||
related cleanup.
|
||||
|
||||
|
@ -194,6 +198,9 @@ Live migration resume path
|
|||
(RESTORE_VM, _ACTIVE, _STOP)
|
||||
|
|
||||
For each device, .load_state() is called for that device section data
|
||||
transmitted via the main migration channel.
|
||||
For data transmitted via multifd channels .load_state_buffer() is called
|
||||
instead.
|
||||
(RESTORE_VM, _ACTIVE, _RESUMING)
|
||||
|
|
||||
At the end, .load_cleanup() is called for each device and vCPUs are started
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue