Re: [PATCH] swiotlb: ensure io_tlb_default_mem spinlock always initialised

From: Ben Dooks
Date: Mon Jul 11 2022 - 07:19:30 EST


On 11/07/2022 11:39, Christoph Hellwig wrote:
On Mon, Jul 11, 2022 at 11:24:51AM +0100, Ben Dooks wrote:
On 11/07/2022 11:21, Christoph Hellwig wrote:
On Mon, Jul 11, 2022 at 11:07:17AM +0100, Robin Murphy wrote:
If none of your peripherals should need SWIOTLB, then the fact that
you're ending up in swiotlb_map() at all is a clear sign that
something's wrong. Most likely someone's forgotten to set their DMA
masks correctly.

Yes.

Possibly, we had at least one driver which attempted to set a 32 bit
DMA mask which had to be removed as the DMA layer accepts this but
since there is no DMA32 memory the allocator then just fails.

I expect the above may need to be a separate discussion(s) of how to
default the DMA mask and how to stop the implicit acceptance of setting
a 32-bit DMA mask.

No. Linux simply assumes you can do 32-bit DMA and this won't
change. So we'll need to fix your platform to support swiotlb
eventually.

Ok, is there any examples currently in the kernel that have no memory
in the DMA32 zone that do use swiotlb?