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