Re: [PATCH 0/3] Fix virtio-blk issue with SWIOTLB

From: Christoph Hellwig
Date: Tue Jan 15 2019 - 08:09:32 EST


On Mon, Jan 14, 2019 at 03:48:47PM -0500, Michael S. Tsirkin wrote:
> I think you are exaggerating a little here. Limited access with e.g.
> need to flush caches is common on lower end but less common on higher
> end systems used for virtualization. As you point out that changes with
> e.g. SEV but then SEV is a pretty niche thing so far.
>
> So I would make that a SHOULD probably.

The problem is that without using DMA ops you can't just plug the device
into a random system, which is a total no-go for periphals.

And cache flushing is not that uncommmon, e.g. every sparc systems
needs it, many arm/arm64 ones, some power ones, lots of mips ones, etc.

But cache flushing is just one side of it - lots of systems have either
mandatory or option IOMMUs, and without the platform access flag that
doesn't work. As does that case where you have a DMA offset, which
is extremly common on arm and power systems. So you might find a few
non-x86 systems you can plug it in and it'll just work, but it won't
be all that many. And even on x86 your device will be completely broken
if the users dares to use an IOMMU.

> > flags really needs some major updates in terms of DMA access.
>
> Thanks for the reminder. Yes generally spec tends to still say e.g.
> "physical address" where it really means a "DMA address" in Linux terms.
> Whether changing that will make things much clearer I'm not sure. E.g.
> hardware designers don't much care I guess.

At least say bus address - as said above the CPU and bus concepts of
physicall addresses are different in many systems. Including x86
when you use IOMMUs.