On Thu, 2018-08-02 at 20:19 +0300, Michael S. Tsirkin wrote:
I see. So yes, given that device does not know or care, using
virtio features is an awkward fit.
So let's say as a quick fix for you maybe we could generalize the
xen_domain hack, instead of just checking xen_domain check some static
branch. Then teach xen and others to enable that.>
OK but problem then becomes this: if you do this and virtio device appears
behind a vIOMMU and it does not advertize the IOMMU flag, the
code will try to use the vIOMMU mappings and fail.
It does look like even with trick above, you need a special version of
DMA ops that does just swiotlb but not any of the other things DMA API
might do.
Thoughts?
Yes, this is the purpose of Anshuman original patch (I haven't looked
at the details of the patch in a while but that's what I told him to
implement ;-) :
- Make virtio always use DMA ops to simplify the code path (with a set
of "transparent" ops for legacy)
and
- Provide an arch hook allowing us to "override" those "transparent"
DMA ops with some custom ones that do the appropriate swiotlb gunk.
Cheers,
Ben.