Re: [PATCH] riscv: mm: Move dma_contiguous_reserve() after NUMA initialization

From: Paul Walmsley

Date: Tue Jul 21 2026 - 19:10:02 EST


Hi,

On Tue, 14 Jul 2026, Eder Zulian wrote:

> Move the dma_contiguous_reserve() call from setup_bootmem() to
> misc_mem_init(), placing it after arch_numa_init(). This ensures that
> NUMA topology is initialized when reserving contiguous memory for DMA.
>
> Tested with CMA_SIZE_PERNUMA enabled and two NUMA nodes on QEMU:
>
> qemu-system-riscv64 \
> -machine virt \
> -nographic \
> -smp 2 -m 512M \
> -numa node,nodeid=0,cpus=0,memdev=m0 \
> -numa node,nodeid=1,cpus=1,memdev=m1 \
> -object memory-backend-ram,id=m0,size=256M \
> -object memory-backend-ram,id=m1,size=256M \
> -kernel arch/riscv/boot/Image \
> -append "console=ttyS0 earlycon loglevel=7 cma=16M"
>
> Unpatched kernel's log (one global CMA pool and no per-nodepools, 16 MiB
> cma-reserved):
>
> [ 0.000000] cma: Reserved 16 MiB at 0x000000009ee00000
> ...
> [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000008fffffff]
> [ 0.000000] Initmem setup node 1 [mem 0x0000000090000000-0x000000009fffffff]
> ...
> [ 0.056397] smp: Brought up 2 nodes, 2 CPUs
> [ 0.066135] Memory: 449288K/524288K available (12279K kernel code, 5980K rwdata, 6144K rodata, 2467K init, 482K bss, 54504K reserved, 16384K cma-reserved)
>
> Patched kernel's log (three CMA pools are created, 48 MiB total),
>
> [ 0.000000] cma: Reserved 16 MiB at 0x000000009ee00000
> [ 0.000000] cma: Reserved 16 MiB at 0x000000008ee00000
> [ 0.000000] cma: Reserved 16 MiB at 0x000000009de00000
> ...
> [ 0.054251] smp: Brought up 2 nodes, 2 CPUs
> [ 0.064082] Memory: 416520K/524288K available (12279K kernel code, 5980K rwdata, 6144K rodata, 2467K init, 482K bss, 54504K reserved, 49152K cma-reserved)
>
> Signed-off-by: Eder Zulian <ezulian@xxxxxxxxxx>

Thanks, queued for v7.3.


- Paul