mbox series

[v3,00/10] add generic vDPA device support

Message ID 20220319072012.525-1-longpeng2@huawei.com (mailing list archive)
Headers show
Series add generic vDPA device support | expand

Message

Zhijian Li (Fujitsu)" via March 19, 2022, 7:20 a.m. UTC
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

Comments

Stefano Garzarella March 28, 2022, 3:11 p.m. UTC | #1
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
Zhijian Li (Fujitsu)" via March 29, 2022, 5:20 a.m. UTC | #2
> -----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