On 08.07.2026 10:35, David Hildenbrand (Arm) wrote:
On 7/7/26 12:02, Marek Szyprowski wrote:
On 01.07.2026 18:08, Thierry Reding wrote:
From: Thierry Reding treding@nvidia.com
There is no technical reason why there should be a limited number of CMA regions, so extract some code into helpers and use them to create extra functions (cma_create() and cma_free()) that allow creating and freeing, respectively, CMA regions dynamically at runtime.
Well, the technical reason for not creating cma regions dynamically at runtime is that on some architectures (like 32bit ARM) the early fixup for the region is needed to make it functional for DMA.
Can you point me at the code that does that? Thanks!
Check dma_contiguous_early_fixup() and dma_contiguous_remap() inĀ arch/arm/mm/dma-mapping.c. Those functions ensures that the CPU mappings for the CMA reserved region in linear map are remapped with 4k pages instead of the 1M sections, so later, it will beĀ possible to alter the mappings and change them to coherent when needed (altering 1M sections is not possible, because each process has it's own level-1 array even for the kernel linear mapping).
However, in the use case in this patchset the reserved region is only shared with buddy allocator by using the CMA infrastructure, not registered to the regular DMA-mapping API, so it would work fine. I'm not convinced that this is the right API to use for this though.
Best regards