Re: [PATCH 3/5] vDPA: introduce vDPA bus

From: Jason Wang
Date: Wed Jan 22 2020 - 01:18:37 EST



On 2020/1/21 äå10:17, Michael S. Tsirkin wrote:
On Tue, Jan 21, 2020 at 02:05:04PM +0000, Jason Gunthorpe wrote:
On Tue, Jan 21, 2020 at 03:15:43AM -0500, Michael S. Tsirkin wrote:
This sounds more flexible e.g driver may choose to implement static mapping
one through commit. But a question here, it looks to me this still requires
the DMA to be synced with at least commit here. Otherwise device may get DMA
fault? Or device is expected to be paused DMA during begin?

Thanks
For example, commit might switch one set of tables for another,
without need to pause DMA.
I'm not aware of any hardware that can do something like this
completely atomically..
FWIW VTD can do this atomically.

Any mapping change API has to be based around add/remove regions
without any active DMA (ie active DMA is a guest error the guest can
be crashed if it does this)

Jason
Right, lots of cases are well served by only changing parts of
mapping that aren't in active use. Memory hotplug is such a case.
That's not the same as a completely static mapping.


For hotplug it should be fine with current Qemu since it belongs to different memory regions. So each dimm should have its own dedicated map entries in IOMMU.

But I'm not sure if the merging logic in current vhost memory listener may cause any trouble, we may need to disable it.

Thanks