[PATCH 4/4] sample/reserved_mem: Introduce a sample of struct page and dio support to no-map rmem

Arnd Bergmann arnd at arndb.de
Tue Jul 12 03:20:43 PDT 2022


On Tue, Jul 12, 2022 at 12:08 PM Arnd Bergmann <arnd at arndb.de> wrote:
> On Tue, Jul 12, 2022 at 11:58 AM Li Chen <me at linux.beauty> wrote:
> >
> > The limitation is our DSP can only access 32bit memory, but total dram is > 4G, so I cannot use
> > "size = <...>" in our real case (it might get memory above 4G). I'm not sure if other vendors' DSP also has
> > this limitation, if so, how do they deal with it if throughput matters.
>
> This is a common limitation that gets handled automatically by setting
> the dma_mask of the device through the dma-ranges property in DT.
> When the driver does dma_alloc_coherent() or similar to gets its buffer,
> it will then allocate pages below this boundary.

To clarify: in the DT, you can either add a 'alloc-ranges' property to limit
where the CMA area gets allocated, or use a 'reg' property instead of the
'size' property to force a specific address. I would expect that in either
case, you get the type of memory area you want (a reserved set of
addresses with page structures that you can use for contiguous
allocations within the first 4GB), but it's possible that I'm missing
some more details here.

         Arnd



More information about the linux-arm-kernel mailing list