Message ID | 20220319072012.525-1-longpeng2@huawei.com (mailing list archive) |
---|---|
Headers | show |
Series | add generic vDPA device support | expand |
On Sat, Mar 19, 2022 at 03:20:02PM +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. > >We can use the generic vDPA device as follow: > -device vhost-vdpa-device-pci,vdpa-dev=/dev/vhost-vdpa-X > >I've done some simple tests on Huawei's offloading card (net, 0.95) >and vdpa_sim_blk (1.0); The whole seems almost okay, I left you some comments, but for the next version maybe it's better to reorganize the series differently. Instead of adding vdpa-dev and vdpa-dev-pci incrementally, with stub functions and untestable parts, I would make a patch that adds vdpa-dev in full and then one that adds vdpa-dev-pci. The first 2 patches on the other hand are okay, maybe patch 2 won't be needed since I think we will sync the headers after the 7.0 release, but is better to keep it for now to simplify the review. Thanks, Stefano
> -----Original Message----- > From: Stefano Garzarella [mailto:sgarzare@redhat.com] > Sent: Monday, March 28, 2022 11:12 PM > To: Longpeng (Mike, Cloud Infrastructure Service Product Dept.) > <longpeng2@huawei.com> > Cc: stefanha@redhat.com; mst@redhat.com; cohuck@redhat.com; > pbonzini@redhat.com; Gonglei (Arei) <arei.gonglei@huawei.com>; Yechuan > <yechuan@huawei.com>; Huangzhichao <huangzhichao@huawei.com>; > qemu-devel@nongnu.org > Subject: Re: [PATCH v3 00/10] add generic vDPA device support > > On Sat, Mar 19, 2022 at 03:20:02PM +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. > > > >We can use the generic vDPA device as follow: > > -device vhost-vdpa-device-pci,vdpa-dev=/dev/vhost-vdpa-X > > > >I've done some simple tests on Huawei's offloading card (net, 0.95) > >and vdpa_sim_blk (1.0); > > The whole seems almost okay, I left you some comments, but for the next > version maybe it's better to reorganize the series differently. > > Instead of adding vdpa-dev and vdpa-dev-pci incrementally, with stub > functions and untestable parts, I would make a patch that adds vdpa-dev > in full and then one that adds vdpa-dev-pci. Ok, will do in next version. > The first 2 patches on the other hand are okay, maybe patch 2 won't be > needed since I think we will sync the headers after the 7.0 release, but > is better to keep it for now to simplify the review. > Yes, that's also my original intent. Thanks. > Thanks, > Stefano
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,vdpa-dev=/dev/vhost-vdpa-X I've done some simple tests on Huawei's offloading card (net, 0.95) and vdpa_sim_blk (1.0); The kernel part: https://lkml.org/lkml/2022/3/14/1636 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) (10): virtio: get class_id and pci device id by the virtio id update linux headers vdpa: add the infrastructure of vdpa-dev vdpa-dev: implement the instance_init/class_init interface vdpa-dev: implement the realize interface vdpa-dev: implement the unrealize interface vdpa-dev: implement the get_config/set_config interface vdpa-dev: implement the get_features interface vdpa-dev: implement the set_status interface vdpa-dev: mark the device as unmigratable hw/virtio/Kconfig | 5 + hw/virtio/meson.build | 2 + hw/virtio/vdpa-dev-pci.c | 101 +++++++++ hw/virtio/vdpa-dev.c | 384 +++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 77 +++++++ hw/virtio/virtio-pci.h | 5 + include/hw/virtio/vdpa-dev.h | 43 ++++ linux-headers/linux/vhost.h | 7 + 8 files changed, 624 insertions(+) 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