Re: [PATCH 2/2] virtio: let virtio use DMA API when guest RAM is protected

From: Christoph Hellwig
Date: Fri Feb 21 2020 - 11:36:49 EST


On Fri, Feb 21, 2020 at 01:59:15PM +1100, David Gibson wrote:
> > Hell no. This is a detail of the platform DMA direct implementation.
> > Drivers have no business looking at this flag, and virtio finally needs
> > to be fixed to use the DMA API properly for everything but legacy devices.
>
> So, this patch definitely isn't right as it stands, but I'm struggling
> to understand what it is you're saying is the right way.
>
> By "legacy devices" I assume you mean pre-virtio-1.0 devices, that
> lack the F_VERSION_1 feature flag. Is that right? Because I don't
> see how being a legacy device or not relates to use of the DMA API.

No. "legacy" is anything that does not set F_ACCESS_PLATFORM.

> I *think* what you are suggesting here is that virtio devices that
> have !F_IOMMU_PLATFORM should have their dma_ops set up so that the
> DMA API treats IOVA==PA, which will satisfy what the device expects.
> Then the virtio driver can use the DMA API the same way for both
> F_IOMMU_PLATFORM and !F_IOMMU_PLATFORM devices.

No. Those should just keep using the existing legacy non-dma ops
case and be done with it. No changes to that and most certainly
no new features.