The virtio-vhost-user (vvu) allows moving the vhost-user process inside a VM. This is done by moving vhost device backend into a guest and tunneling the vhost-user protocol over a new type of device called virtio-vhost-user.
A usecase for this is live-updating the host kernel which has the DPDK application running inside a VM with vvu device. The DPDK application doesn't need to be restarted after the host kernel has been updated as the DPDK VM is snapshotted before host kernel update, allowing DPDK state to be saved. There should potentially be further usecases, as it allows isolating the vhost-user process inside a VM, with more components like SPDK. vvu is based on the work initially done by Stefan Hajnoczi [1] and continued by Nikos Dragazis [2], [3]. The virtio-spec changes for vvu are currently in review[4]. A HTML version with the changes is available at [5]. A working prototype showcasing vvu can be reproduced using instructions in [6]. Thanks and looking forward to your response! Usama [1] https://wiki.qemu.org/Features/VirtioVhostUser [2] https://ndragazis.github.io/dpdk-vhost-vvu-demo.html [3] https://lists.oasis-open.org/archives/virtio-dev/202005/msg00132.html [4] https://lists.oasis-open.org/archives/virtio-dev/202204/msg00022.html [5] https://uarif1.github.io/vvu/v2/virtio-v1.1-cs01 [6] https://uarif1.github.io/vvu/dpdk-vvu-instructions Usama Arif (2): vhost-user: share the vhost-user protocol related structures virtio-vhost-user: add virtio-vhost-user device hw/virtio/Kconfig | 5 + hw/virtio/meson.build | 2 + hw/virtio/trace-events | 26 + hw/virtio/vhost-user.c | 160 --- hw/virtio/virtio-pci.c | 13 +- hw/virtio/virtio-vhost-user-pci.c | 471 ++++++++ hw/virtio/virtio-vhost-user.c | 1066 +++++++++++++++++++ hw/virtio/virtio.c | 7 +- include/hw/pci/pci.h | 1 + include/hw/virtio/vhost-user.h | 163 +++ include/hw/virtio/virtio-pci.h | 7 + include/hw/virtio/virtio-vhost-user.h | 126 +++ include/hw/virtio/virtio.h | 2 + include/standard-headers/linux/virtio_ids.h | 1 + 14 files changed, 1880 insertions(+), 170 deletions(-) create mode 100644 hw/virtio/virtio-vhost-user-pci.c create mode 100644 hw/virtio/virtio-vhost-user.c create mode 100644 include/hw/virtio/virtio-vhost-user.h -- 2.25.1