Re: [PATCH 2/2] virtio_ring: Use DMA API if memory is encrypted

From: Jason Wang
Date: Wed Oct 16 2019 - 22:34:11 EST



On 2019/10/15 äå3:35, Christoph Hellwig wrote:
On Fri, Oct 11, 2019 at 06:25:19PM -0700, Ram Pai wrote:
From: Thiago Jung Bauermann <bauerman@xxxxxxxxxxxxx>

Normally, virtio enables DMA API with VIRTIO_F_IOMMU_PLATFORM, which must
be set by both device and guest driver. However, as a hack, when DMA API
returns physical addresses, guest driver can use the DMA API; even though
device does not set VIRTIO_F_IOMMU_PLATFORM and just uses physical
addresses.
Sorry, but this is a complete bullshit hack. Driver must always use
the DMA API if they do DMA, and if virtio devices use physical addresses
that needs to be returned through the platform firmware interfaces for
the dma setup. If you don't do that yet (which based on previous
informations you don't), you need to fix it, and we can then quirk
old implementations that already are out in the field.

In other words: we finally need to fix that virtio mess and not pile
hacks on top of hacks.


I agree, the only reason for IOMMU_PLATFORM is to make sure guest works for some old and buggy qemu when vIOMMU is enabled which seems useless (note we don't even support vIOMMU migration in that case).

Thanks