Support vdpa devices with the cpr-exec live migration mode. This series depends on the QEMU series Live update: cpr-exec https://lore.kernel.org/qemu-devel/1719776434-435013-1-git-send-email-steven.sist...@oracle.com/
and depends on the kernel series: vdpa live update https://lore.kernel.org/virtualization/1720790333-456232-1-git-send-email-steven.sist...@oracle.com/ Preserve the device descriptor across exec, which in turn preserves the locks on pages which are pinned in memory for DMA. Suppress the DMA unmap calls which are normally triggerred when a vdpa device is suspended. After exec, call VHOST_NEW_OWNER to inform the device that a new process is in charge. If the device advertises the VHOST_BACKEND_F_IOTLB_REMAP capability, then send VHOST_IOTLB_REMAP messages to update the userland address for each DMA mapping. Devices that do not advertise this cap have already translated the userland addresses to physical when the DMA was initially mapped, and do not require any update. The cpr-exec mode leverages the vdpa live migration code path for the rest of the update, but is faster than live migration because it does not unlock and relock pages in memory for DMA. This series does not add any user-visible interfaces. Steve Sistare (7): migration: cpr_needed_for_reuse migration: skip dirty memory tracking for cpr vdpa/cpr: preserve device fd vdpa/cpr: kernel interfaces vdpa/cpr: use VHOST_NEW_OWNER vdpa/cpr: pass shadow parameter to dma functions vdpa/cpr: preserve dma mappings hw/virtio/trace-events | 5 +- hw/virtio/vhost-vdpa.c | 71 +++++++++++++++----- include/hw/virtio/vhost-vdpa.h | 7 +- include/hw/virtio/vhost.h | 1 + include/migration/cpr.h | 1 + include/standard-headers/linux/vhost_types.h | 7 ++ linux-headers/linux/vhost.h | 9 +++ migration/cpr.c | 5 ++ net/vhost-vdpa.c | 29 +++++--- scripts/tracetool/__init__.py | 2 +- system/memory.c | 11 +++ 11 files changed, 120 insertions(+), 28 deletions(-) -- 2.39.3