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

Andy Lutomirski
2014-09-20T05:59:12Z

On Sep 19, 2014 2:33 PM, "Benjamin Herrenschmidt"
<benh@kernel.crashing.org> wrote:
>
> On Wed, 2014-09-17 at 09:07 -0700, Andy Lutomirski wrote:
> > It shouldn't. That being said, at some point this problem will need
> > solving on PPC, and this patch doesn't help much, other than adding
> > the virtio_ring piece.
> >
> > I'd really like to see the generic or arch IOMMU code handle this so
> > that the PPC special case in the virtio-pci driver can go away.
> >
> > Another reason that this kind of special casing doesn't belong in
> > virtio-pci: if anyone ever binds vfio to a virtio-pci device, if the
> > DMA API doesn't work right, then the kernel will go boom or be
> > compromised.
>
> Well, that's also for these reasons that I think your patch shouldn't go
> through those virtio_* variants that test that "use_dma_api" flag or
> whatever you called it last time I looked :-)
>
> You should just unconditionally call the DMA API and we should fixup the
> special cases by overriding the hooks.

Unconditionally for virtio-pci or unconditionally for all drivers? I
wouldn't be surprised if some of the virtio-mmio archs have trouble,
too. Aarch64, at least, seems to be okay with using the DMA API on
virtio_mmio devices, even with IOMMU support compiled in.

Are there other relevant architectures that are easy to test?

>
> I can help you do the override hack for PPC for now, until we can do
> something saner accross all architectures.

Sure.

The question is: should the patches go in to 3.18 as is our should
they wait? It would be straightforward to remove the use_dma_api
switch PPC, s390, and virtio_mmio are ready.

--Andy

>
> The main problem is s390 but I had a quick chat with Utz Bacher earlier
> this week and he seemed to think having s390 use the DMA API shouldn't
> be a big deal, they can also hookup some transparent set of ops if
> necessary.
>
> Cheers,
> Ben.
>
>