[RFC 0/2] Introduce virtio-vhost-user device

Usama Arif posted 2 patches 1 year, 11 months ago
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
[RFC 0/2] Introduce virtio-vhost-user device
Posted by Usama Arif 1 year, 11 months ago
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