CVQ of net vhost-vdpa devices can be intercepted since the work of [1]. The virtio-net device model is updated. The migration was blocked because although the state can be megrated between VMM it was not possible to restore on the destination NIC.
This series add support for SVQ to inject external messages without the guest's knowledge, so before the guest is resumed all the guest visible state is restored. It is done using standard CVQ messages, so the vhost-vdpa device does not need to learn how to restore it: As long as they have the feature, they know how to handle it. This series needs SVQ CVQ support [1] and fixes [2] to be applied. Thanks! [1] https://lists.nongnu.org/archive/html/qemu-devel/2022-07/msg02808.html [2] https://lists.nongnu.org/archive/html/qemu-devel/2022-07/msg02726.html Eugenio Pérez (12): vhost: Get vring base from vq, not svq vhost: Move SVQ queue rewind to the destination vdpa: Small rename of error labels vdpa: delay set_vring_ready after DRIVER_OK vhost: stop transfer elem ownership in vhost_handle_guest_kick vhost: Use opaque data in SVQDescState vhost: Add VhostVDPAStartOp operation vdpa: Add vhost_vdpa_start_control_svq vdpa: Extract vhost_vdpa_net_svq_add from vhost_vdpa_net_handle_ctrl_avail vdpa: Make vhost_vdpa_net_cvq_map_elem accept any out sg vdpa: Add virtio-net mac address via CVQ at start vdpa: Delete CVQ migration blocker hw/virtio/vhost-shadow-virtqueue.h | 7 +- include/hw/virtio/vhost-vdpa.h | 6 +- hw/virtio/vhost-shadow-virtqueue.c | 30 ++--- hw/virtio/vhost-vdpa.c | 70 ++++++----- net/vhost-vdpa.c | 184 ++++++++++++++++++++--------- 5 files changed, 193 insertions(+), 104 deletions(-) -- 2.31.1