[RFC] virtio: Use DMA MAP API for devices without an IOMMU

Christoph Hellwig
Sun, 15 Apr 2018 12:11:57 -0000

On Fri, Apr 06, 2018 at 06:37:18PM +1000, Benjamin Herrenschmidt
wrote:
> > > implemented as DMA API which the virtio core understands. There
is no
> > > need for an IOMMU to be involved for the device representation in
this
> > > case IMHO.
> >
> > This whole virtio translation issue is a mess.  I think we need to
> > switch it to the dma API, and then quirk the legacy case to always
> > use the direct mapping inside the dma API.
>
> Fine with using a dma API always on the Linux side, but we do want to
> special case virtio still at the arch and qemu side to have a "direct
> mapping" mode. Not sure how (special flags on PCI devices) to avoid
> actually going through an emulated IOMMU on the qemu side, because that
> slows things down, esp. with vhost.
>
> IE, we can't I think just treat it the same as a physical device.

We should have treated it like a physical device from the start, but
that device has unfortunately sailed.

But yes, we'll need a per-device quirk that says 'don't attach an
iommu'.