Re: [PATCH v2] dma-mapping: fix dma_addressing_limited if dma_range_map can't cover all system RAM

From: Robin Murphy
Date: Tue Oct 10 2023 - 05:40:50 EST


On 2023-10-10 08:48, Christoph Hellwig wrote:
dma_addressing_limited is called for every dma (direct) map, and this
new code is way to heavy for that. We'll need to cache the information
somehow.

But is it? That was my instinctive reaction as well, but AFAICS it is only actually used by drivers in setup paths, either directly or via dma_max_mapping_size(). The dma_capable() check which we *do* use for every actual mapping still just checks whether the given physical address exists in the range map. I believe the underlying problem here is when dma_capable() say the mapping needs bouncing, but then it's too big for that to succeed, since dma_max_mapping_size() gave the wrong answer to start with.

Thanks,
Robin.