Re: [PATCH RFC 3/4] dma-direct: add offset to zone_dma_bits

From: Catalin Marinas
Date: Tue Jan 09 2024 - 05:55:20 EST


On Tue, Jan 09, 2024 at 12:03:43PM +0200, Baruch Siach wrote:
> On Mon, Jan 08 2024, Catalin Marinas wrote:
> > On Wed, Dec 27, 2023 at 05:04:27PM +0200, Baruch Siach wrote:
> >> Current code using zone_dma_bits assume that all addresses range in the
> >> bits mask are suitable for DMA. For some existing platforms this
> >> assumption is not correct. DMA range might have non zero lower limit.
> >>
> >> Add 'zone_dma_off' for platform code to set base address for DMA zone.
> >>
> >> Rename the dma_direct_supported() local 'min_mask' variable to better
> >> describe its use as limit.
> >>
> >> Suggested-by: Catalin Marinas <catalin.marinas@xxxxxxx>
> >
> > When I suggested taking the DMA offsets into account, that's not exactly
> > what I meant. Based on patch 4, it looks like zone_dma_off is equivalent
> > to the lower CPU address. Let's say a system has DRAM starting at 2GB
> > and all 32-bit DMA-capable devices has a DMA offset of 0. We want
> > ZONE_DMA32 to end at 4GB rather than 6GB.
>
> Patch 4 sets zone_dma_off to the lower limit from 'dma-ranges' property
> that determines zone_dma_bits. This is not necessarily equivalent to
> start of DRAM, though it happens to be that way on my platform.

A bit better but it still assumes that all devices have the same DMA
offset which may not be the case.

--
Catalin