[PATCH v5 0/9] Add vduse live migration features
Maxime Coquelin
maxime.coquelin at redhat.com
Mon Oct 19 16:45:42 CEST 2026
On Mon, Oct 19, 2026 at 3:48 PM Eugenio Pérez <eperezma at redhat.com> wrote:
>
> This series introduces features to the VDUSE (vDPA Device in Userspace) driver
> to support Live Migration.
>
> Currently, DPDK does not support VDUSE devices live migration because the
> driver lacks a mechanism to suspend the device and quiesce the rings to
> initiate the switchover. This series implements the suspend operation to
> address this limitation.
>
> Furthermore, enabling Live Migration for devices with control virtqueue
> requires two additional features. Both of them are included in this series.
>
> * Address Spaces ID (ASID) support: This allows QEMU to isolate and intercept
> the device's CVQ. By doing so, QEMU is able to migrate the device status
> transparently, without requiring the device to support state save and
> restore.
> * QUEUE_READY: This allows QEMU to control when the dataplane virtqueues are
> enabled. This ensures the dataplane is started after the device
> configuration has been fully restored via the CVQ.
>
> It also enables the VIRTIO_NET_F_STATUS feature. This allows the device to
> signal the driver that it needs to send gratuitous ARP with
> VIRTIO_NET_S_ANNOUNCE, reducing the Live Migration downtime.
>
> v5:
> * Update headers to 7.3
> * Rebase on top of main, merge conflicts.
>
> v4:
> * Rebase on top of origin/main, which already includes the __counted_by error
> fix.
> * Add VDUSE_SUSPEND to lib/vhost/vduse.c:vduse_reqs_str (Maxime).
>
> v3:
> * Include uapi/linux/stddef.h and revert the -D__counted_by from v2.
>
> v2:
> * Add -D__counted_by(X)= if the compiler does not support it. It is
> pulled by the kernel headers.
>
> PATCH v1:
> * Move to VDUSE_SET_FEATURES ioctl instead of config space field.
> * Add a few bounds control.
> * Update kernel headers to v7.3-rc3.
>
> RFC v4:
> * Sync headers with Linux's latest existing and proposed UAPI. Both
> files constants and new ioctl VDUSE_SET_FEATURES.
> * Check for more error conditions and clarified some error messages in
> ready message processing.
> * Add relevant release notes.
> * Fix cosmetic whitespaces & checkpath errors.
> * Fix error path of vhost_user_iotlb_init and vhost_user_iotlb_init_one.
> * Fix commits author.
>
> RFC v3:
> * Replace incorrect '%lx' DEBUG print format specifier with PRIx64
>
> RFC v2:
> * Following latest comments on kernel series about VDUSE features, not checking
> API version but only check if VDUSE_GET_FEATURES success.
> * Move the start and last declarations in the braces as gcc 8 does not like
> them interleaved with statements. Actually, I think the move was a mistake in
> the first version.
> https://mails.dpdk.org/archives/test-report/2026-February/958175.html
>
> Eugenio Pérez (3):
> uapi: import VDUSE and VFIO header from v7.3 kernel
> vhost: Support VDUSE QUEUE_READY feature
> vhost: Support vduse suspend feature
>
> Maxime Coquelin (6):
> vhost: introduce ASID support
> vhost: add VDUSE API version negotiation
> vhost: add virtqueues groups support to VDUSE
> vhost: add ASID support to VDUSE IOTLB operations
> vhost: claim VDUSE support for API version 1
> vhost: add net status feature to VDUSE
>
> kernel/linux/uapi/linux/iommufd.h | 105 +++++++++++-
> kernel/linux/uapi/linux/stddef.h | 4 +
> kernel/linux/uapi/linux/vduse.h | 113 ++++++++++++-
> kernel/linux/uapi/linux/vfio.h | 51 +++++-
> kernel/linux/uapi/version | 2 +-
> lib/vhost/iotlb.c | 233 +++++++++++++++++----------
> lib/vhost/iotlb.h | 14 +-
> lib/vhost/vduse.c | 259 +++++++++++++++++++++++++++---
> lib/vhost/vduse.h | 3 +-
> lib/vhost/vhost.c | 16 +-
> lib/vhost/vhost.h | 16 +-
> lib/vhost/vhost_user.c | 13 +-
> 12 files changed, 676 insertions(+), 153 deletions(-)
>
> --
> 2.56.0
>
applied to next-virtio/for-next-net.
Thanks!
Maxime
More information about the dev
mailing list