Messages in this thread Patch in this message |  | | From | Eli Cohen <> | Subject | RE: [PATCH 3/5] virtio-vdpa: support per vq dma device | Date | Sun, 15 Jan 2023 11:06:55 +0000 |
| |
> From: Jason Wang <jasowang@redhat.com> > Sent: Wednesday, 11 January 2023 8:28 > To: mst@redhat.com; jasowang@redhat.com > Cc: Eli Cohen <elic@nvidia.com>; gdawar@amd.com; > virtualization@lists.linux-foundation.org; linux-kernel@vger.kernel.org; > tanuj.kamde@amd.com > Subject: [PATCH 3/5] virtio-vdpa: support per vq dma device > > This patch adds the support of per vq dma device for virito-vDPA. vDPA > parents then are allowed to use different DMA devices. This is useful > for the parents that have software or emulated virtqueues. > > Signed-off-by: Jason Wang <jasowang@redhat.com> Reviewed-by: Eli Cohen <elic@nvidia.com> Tested-by: <elic@nvidia.com> > --- > drivers/virtio/virtio_vdpa.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c > index 9670cc79371d..d7f5af62ddaa 100644 > --- a/drivers/virtio/virtio_vdpa.c > +++ b/drivers/virtio/virtio_vdpa.c > @@ -135,6 +135,7 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, > unsigned int index, > { > struct virtio_vdpa_device *vd_dev = to_virtio_vdpa_device(vdev); > struct vdpa_device *vdpa = vd_get_vdpa(vdev); > + struct device *dma_dev; > const struct vdpa_config_ops *ops = vdpa->config; > struct virtio_vdpa_vq_info *info; > struct vdpa_callback cb; > @@ -175,9 +176,15 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, > unsigned int index, > > /* Create the vring */ > align = ops->get_vq_align(vdpa); > - vq = vring_create_virtqueue(index, max_num, align, vdev, > - true, may_reduce_num, ctx, > - virtio_vdpa_notify, callback, name); > + > + if (ops->get_vq_dma_dev) > + dma_dev = ops->get_vq_dma_dev(vdpa, index); > + else > + dma_dev = vdpa_get_dma_dev(vdpa); > + vq = vring_create_virtqueue_dma(index, max_num, align, vdev, > + true, may_reduce_num, ctx, > + virtio_vdpa_notify, callback, > + name, dma_dev); > if (!vq) { > err = -ENOMEM; > goto error_new_virtqueue; > -- > 2.25.1
|  |