Re: [PATCH v4] of: reserved_mem: Restructure call site for dma_contiguous_early_fixup()
From: Ye Li
Date: Tue Nov 25 2025 - 20:38:23 EST
On 8/11/2025 7:07 PM, Marek Szyprowski wrote:
On 06.08.2025 19:24, Oreoluwa Babatunde wrote:
Restructure the call site for dma_contiguous_early_fixup() to
where the reserved_mem nodes are being parsed from the DT so that
dma_mmu_remap[] is populated before dma_contiguous_remap() is called.
Fixes: 8a6e02d0c00e ("of: reserved_mem: Restructure how the reserved memory regions are processed")
Signed-off-by: Oreoluwa Babatunde <oreoluwa.babatunde@xxxxxxxxxxxxxxxx>
Tested-by: William Zhang <william.zhang@xxxxxxxxxxxx>
Thanks, applied to dma-mapping-fixes branch.
Best regards
Hi Oreoluwa,
We observed this patch causing kernel boot hang on iMX6 (armv7) platforms if using "cma=" kernel parameter. It only happens when the size assigned in
"cma=" parameter is smaller than cma default size in dts.
For example, we use "cma=96M" in command line and below reserved memory node (160M) in dts.
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0xa000000>;
linux,cma-default;
};
};
The root cause is this patch moving the dma_contiguous_early_fixup from rmem_cma_setup to __reserved_mem_alloc_size. rmem_cma_setup can skip the cma reserved memory if command line has cma parameter. However, the __reserved_mem_alloc_size won't do it. So this leads to have two cma regions added to dma_mmu_remap, one from dts, the other from command line. But the reserved memory of memblock that only records the cma from command line is inconsistent with dma_mmu_remap.
The dma_contiguous_remap clears the MMU paging for the region of dma_mmu_remap firstly, then create a new mapping by iotable_init. For the cma from dts, this causes incorrect memory mapping cleared. Then any allocation from memblock in iotable_init hitting to the area will meet MMU mapping issue.
From commit, I don't understand what issue does this patch fix. Can you look into the regression and provide a fix patch.
Best regards,
Ye Li