Thread (35 messages) 35 messages, 8 authors, 2020-02-20

RE: [PATCH] vhost: introduce vDPA based backend

From: Shahaf Shuler <hidden>
Date: 2020-02-05 07:15:11
Also in: kvm, lkml, virtualization

Wednesday, February 5, 2020 4:03 AM, Tiwei Bie:
Subject: Re: [PATCH] vhost: introduce vDPA based backend

On Tue, Feb 04, 2020 at 11:30:11AM +0800, Jason Wang wrote:
quoted
On 2020/1/31 上午11:36, Tiwei Bie wrote:
quoted
This patch introduces a vDPA based vhost backend. This backend is
built on top of the same interface defined in virtio-vDPA and
provides a generic vhost interface for userspace to accelerate the
virtio devices in guest.

This backend is implemented as a vDPA device driver on top of the
same ops used in virtio-vDPA. It will create char device entry named
vhost-vdpa/$vdpa_device_index for userspace to use. Userspace can
use vhost ioctls on top of this char device to setup the backend.

Signed-off-by: Tiwei Bie <redacted>
[...]
quoted
quoted
+static long vhost_vdpa_do_dma_mapping(struct vhost_vdpa *v) {
+	/* TODO: fix this */

Before trying to do this it looks to me we need the following during
the probe

1) if set_map() is not supported by the vDPA device probe the IOMMU
that is supported by the vDPA device
2) allocate IOMMU domain

And then:

3) pin pages through GUP and do proper accounting
4) store GPA->HPA mapping in the umem
5) generate diffs of memory table and using IOMMU API to setup the dma
mapping in this method

For 1), I'm not sure parent is sufficient for to doing this or need to
introduce new API like iommu_device in mdev.
Agree. We may also need to introduce something like the iommu_device.
Would it be better for the map/umnap logic to happen inside each device ? 
Devices that needs the IOMMU will call iommu APIs from inside the driver callback. 
Devices that has other ways to do the DMA mapping will call the proprietary APIs. 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help