Message ID | 20221205084943.2259-1-longpeng2@huawei.com (mailing list archive) |
---|---|
Headers | show |
Series | add generic vDPA device support | expand |
On Mon, Dec 05, 2022 at 04:49:38PM +0800, Longpeng(Mike) wrote: > From: Longpeng <longpeng2@huawei.com> > > Hi guys, > > With the generic vDPA device, QEMU won't need to touch the device > types any more, such like vfio. Fails build: Warning, treated as error: /scm/qemu/docs/system/devices/vhost-vdpa-generic-device.rst:document isn't included in any toctree > We can use the generic vDPA device as follow: > -device vhost-vdpa-device-pci,vhostdev=/dev/vhost-vdpa-X > Or > -M microvm -m 512m -smp 2 -kernel ... -initrd ... -device \ > vhost-vdpa-device,vhostdev=/dev/vhost-vdpa-x > > Changes v10 -> v9: > - optimize the doc [Jason] > > Changes v9 -> v8: > - rename vhost-vdpa-device.rst to vhost-vdpa-generic-device.rst [Jason, Stefano] > - emphasize the vhost-vDPA generic device in doc [Jason] > > Changes v8 -> v7: > - add migration blocker. [Michael] > > Changes v6 -> v7: > (v6: https://mail.gnu.org/archive/html/qemu-devel/2022-05/msg02821.html) > - rebase. [Jason] > - add documentation . [Stefan] > > Changes v5 -> v6: > Patch 2: > - Turn to the original approach in the RFC to initialize the > virtio_pci_id_info array. [Michael] > https://lore.kernel.org/all/20220105005900.860-2-longpeng2@huawei.com/ > Patch 3: > - Fix logical error of exception handler around the post_init. > [Stefano] > - Fix some coding style warnings. [Stefano] > Patch 4: > - Fix some coding style warnings. [Stefano] > > Changes v4 -> v5: > Patch 3: > - remove vhostfd [Jason] > - support virtio-mmio [Jason] > > Changes v3 -> v4: > v3: https://www.mail-archive.com/qemu-devel@nongnu.org/msg877015.html > - reorganize the series [Stefano] > - fix some typos [Stefano] > - fix logical error in vhost_vdpa_device_realize [Stefano] > > Changes v2 -> v3 > Patch 4 & 5: > - only call vdpa ioctls in vdpa-dev.c [Stefano, Longpeng] > - s/VQS_NUM/VQS_COUNT [Stefano] > - check both vdpa_dev_fd and vdpa_dev [Stefano] > Patch 6: > - move all steps into vhost_vdpa_device_unrealize. [Stefano] > > Changes RFC -> v2 > Patch 1: > - rename 'pdev_id' to 'trans_devid' [Michael] > - only use transitional device id for the devices > listed in the spec [Michael] > - use macros to make the id_info table clearer [Longpeng] > - add some modern devices in the id_info table [Longpeng] > Patch 2: > - remove the GET_VECTORS_NUM command [Jason] > Patch 4: > - expose vdpa_dev_fd as a QOM preperty [Stefan] > - introduce vhost_vdpa_device_get_u32 as a common > function to make the code clearer [Stefan] > - fix the misleading description of 'dc->desc' [Stefano] > Patch 5: > - check returned number of virtqueues [Stefan] > Patch 6: > - init s->num_queues [Stefano] > - free s->dev.vqs [Stefano] > > Longpeng (Mike) (5): > virtio: get class_id and pci device id by the virtio id > vdpa: add vdpa-dev support > vdpa: add vdpa-dev-pci support > vdpa-dev: mark the device as unmigratable > docs: Add generic vhost-vdpa device documentation > > .../devices/vhost-vdpa-generic-device.rst | 66 +++ > hw/virtio/Kconfig | 5 + > hw/virtio/meson.build | 2 + > hw/virtio/vdpa-dev-pci.c | 102 +++++ > hw/virtio/vdpa-dev.c | 377 ++++++++++++++++++ > hw/virtio/virtio-pci.c | 88 ++++ > include/hw/virtio/vdpa-dev.h | 43 ++ > include/hw/virtio/virtio-pci.h | 5 + > 8 files changed, 688 insertions(+) > create mode 100644 docs/system/devices/vhost-vdpa-generic-device.rst > create mode 100644 hw/virtio/vdpa-dev-pci.c > create mode 100644 hw/virtio/vdpa-dev.c > create mode 100644 include/hw/virtio/vdpa-dev.h > > -- > 2.23.0
From: Longpeng <longpeng2@huawei.com> Hi guys, With the generic vDPA device, QEMU won't need to touch the device types any more, such like vfio. We can use the generic vDPA device as follow: -device vhost-vdpa-device-pci,vhostdev=/dev/vhost-vdpa-X Or -M microvm -m 512m -smp 2 -kernel ... -initrd ... -device \ vhost-vdpa-device,vhostdev=/dev/vhost-vdpa-x Changes v10 -> v9: - optimize the doc [Jason] Changes v9 -> v8: - rename vhost-vdpa-device.rst to vhost-vdpa-generic-device.rst [Jason, Stefano] - emphasize the vhost-vDPA generic device in doc [Jason] Changes v8 -> v7: - add migration blocker. [Michael] Changes v6 -> v7: (v6: https://mail.gnu.org/archive/html/qemu-devel/2022-05/msg02821.html) - rebase. [Jason] - add documentation . [Stefan] Changes v5 -> v6: Patch 2: - Turn to the original approach in the RFC to initialize the virtio_pci_id_info array. [Michael] https://lore.kernel.org/all/20220105005900.860-2-longpeng2@huawei.com/ Patch 3: - Fix logical error of exception handler around the post_init. [Stefano] - Fix some coding style warnings. [Stefano] Patch 4: - Fix some coding style warnings. [Stefano] Changes v4 -> v5: Patch 3: - remove vhostfd [Jason] - support virtio-mmio [Jason] Changes v3 -> v4: v3: https://www.mail-archive.com/qemu-devel@nongnu.org/msg877015.html - reorganize the series [Stefano] - fix some typos [Stefano] - fix logical error in vhost_vdpa_device_realize [Stefano] Changes v2 -> v3 Patch 4 & 5: - only call vdpa ioctls in vdpa-dev.c [Stefano, Longpeng] - s/VQS_NUM/VQS_COUNT [Stefano] - check both vdpa_dev_fd and vdpa_dev [Stefano] Patch 6: - move all steps into vhost_vdpa_device_unrealize. [Stefano] Changes RFC -> v2 Patch 1: - rename 'pdev_id' to 'trans_devid' [Michael] - only use transitional device id for the devices listed in the spec [Michael] - use macros to make the id_info table clearer [Longpeng] - add some modern devices in the id_info table [Longpeng] Patch 2: - remove the GET_VECTORS_NUM command [Jason] Patch 4: - expose vdpa_dev_fd as a QOM preperty [Stefan] - introduce vhost_vdpa_device_get_u32 as a common function to make the code clearer [Stefan] - fix the misleading description of 'dc->desc' [Stefano] Patch 5: - check returned number of virtqueues [Stefan] Patch 6: - init s->num_queues [Stefano] - free s->dev.vqs [Stefano] Longpeng (Mike) (5): virtio: get class_id and pci device id by the virtio id vdpa: add vdpa-dev support vdpa: add vdpa-dev-pci support vdpa-dev: mark the device as unmigratable docs: Add generic vhost-vdpa device documentation .../devices/vhost-vdpa-generic-device.rst | 66 +++ hw/virtio/Kconfig | 5 + hw/virtio/meson.build | 2 + hw/virtio/vdpa-dev-pci.c | 102 +++++ hw/virtio/vdpa-dev.c | 377 ++++++++++++++++++ hw/virtio/virtio-pci.c | 88 ++++ include/hw/virtio/vdpa-dev.h | 43 ++ include/hw/virtio/virtio-pci.h | 5 + 8 files changed, 688 insertions(+) create mode 100644 docs/system/devices/vhost-vdpa-generic-device.rst create mode 100644 hw/virtio/vdpa-dev-pci.c create mode 100644 hw/virtio/vdpa-dev.c create mode 100644 include/hw/virtio/vdpa-dev.h