On Tue, 28 Jan 2025, Andrew Morton wrote: > From: "Ritesh Harjani (IBM)" <ritesh.list@xxxxxxxxx> > Subject: mm/hugetlb: fix hugepage allocation for interleaved memory nodes > Date: Sat, 11 Jan 2025 16:36:55 +0530 > > gather_bootmem_prealloc() assumes the start nid as 0 and size as > num_node_state(N_MEMORY). That means in case if memory attached numa > nodes are interleaved, then gather_bootmem_prealloc_parallel() will fail > to scan few of these nodes. > > Since memory attached numa nodes can be interleaved in any fashion, hence > ensure that the current code checks for all numa node ids > (.size = nr_node_ids). Let's still keep max_threads as N_MEMORY, so that > it can distributes all nr_node_ids among the these many no. threads. > > e.g. qemu cmdline > ======================== > numa_cmd="-numa node,nodeid=1,memdev=mem1,cpus=2-3 -numa node,nodeid=0,cpus=0-1 -numa dist,src=0,dst=1,val=20" > mem_cmd="-object memory-backend-ram,id=mem1,size=16G" > > w/o this patch for cmdline (default_hugepagesz=1GB hugepagesz=1GB hugepages=2): > ========================== > ~ # cat /proc/meminfo |grep -i huge > AnonHugePages: 0 kB > ShmemHugePages: 0 kB > FileHugePages: 0 kB > HugePages_Total: 0 > HugePages_Free: 0 > HugePages_Rsvd: 0 > HugePages_Surp: 0 > Hugepagesize: 1048576 kB > Hugetlb: 0 kB > > with this patch for cmdline (default_hugepagesz=1GB hugepagesz=1GB hugepages=2): > =========================== > ~ # cat /proc/meminfo |grep -i huge > AnonHugePages: 0 kB > ShmemHugePages: 0 kB > FileHugePages: 0 kB > HugePages_Total: 2 > HugePages_Free: 2 > HugePages_Rsvd: 0 > HugePages_Surp: 0 > Hugepagesize: 1048576 kB > Hugetlb: 2097152 kB > > Link: https://lkml.kernel.org/r/f8d8dad3a5471d284f54185f65d575a6aaab692b.1736592534.git.ritesh.list@xxxxxxxxx > Fixes: b78b27d02930 ("hugetlb: parallelize 1G hugetlb initialization") > Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> > Reported-by: Pavithra Prakash <pavrampu@xxxxxxxxxxxxx> > Suggested-by: Muchun Song <muchun.song@xxxxxxxxx> > Tested-by: Sourabh Jain <sourabhjain@xxxxxxxxxxxxx> > Reviewed-by: Luiz Capitulino <luizcap@xxxxxxxxxx> > Cc: Donet Tom <donettom@xxxxxxxxxxxxx> > Cc: Gang Li <gang.li@xxxxxxxxx> > Cc: Daniel Jordan <daniel.m.jordan@xxxxxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> Acked-by: David Rientjes <rientjes@xxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>