Re: [PATCH v5 2/3] virtio_pci: Use the DMA API for virtqueues when possible

Benjamin Herrenschmidt
2014-09-24T22:04:57Z

On Wed, 2014-09-24 at 14:59 -0700, Andy Lutomirski wrote:

> Scratch that idea, then.
>
> The best that I can currently come up with is to say that pre-1.0
> devices on PPC bypass the IOMMU and that 1.0 devices on PPC and all
> devices on all other architectures do not bypass the IOMMU.

Well, the thing is, we *want* them to bypass the IOMMU for performance
reasons in the long run. Today we have no ways to tell our guests that
a PCI bus doesn't have an IOMMU, they always do !

Also qemu can mix and match devices on a given PCI bus so making this a
bus property wouldn't work either.

> I agree that this is far from ideal. Any ideas? Is there any other
> channel that QEMU can use to signal to a PPC guest that a specific PCI
> virtio device isn't really behind an IOMMU?

Any reason why this can't be a virtio capability ?

> From my POV, the main
> consideration is that existing QEMU versions hosting Xen hypervisors
> should work, which is not the case in current kernels, but which is
> the case with my patches without any known regressions.
>
> Is there some evil trick that a PPC guest could use to detect whether
> the IOMMU is honored? As an example that I don't like at all, the
> guest could program the IOMMU so that the ring's physical address maps
> to a second copy of the ring and then see which one works.

Cheers,
Ben.