The nid passed to cma_declare_contiguous_nid() may be NUMA_NO_NODE, which is not the actual nid. To get the correct nid, we can get the nid from physical address. Signed-off-by: Yajun Deng <yajun.deng@xxxxxxxxx> --- mm/cma.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/cma.c b/mm/cma.c index 3e9724716bad..be6cdde32944 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -361,6 +361,7 @@ int __init cma_declare_contiguous_nid(phys_addr_t base, kmemleak_ignore_phys(addr); base = addr; } + nid = early_pfn_to_nid(PHYS_PFN(base)); ret = cma_init_reserved_mem(base, size, order_per_bit, name, res_cma); if (ret) -- 2.25.1