Re: [PATCH v2 1/2] hugetlb: Fix hugepages_setup when deal with pernode

From: liupeng (DM)
Date: Fri Apr 01 2022 - 22:37:10 EST



On 2022/4/1 18:43, David Hildenbrand wrote:
On 01.04.22 12:12, Peng Liu wrote:
Hugepages can be specified to pernode since "hugetlbfs: extend
the definition of hugepages parameter to support node allocation",
but the following problem is observed.

Confusing behavior is observed when both 1G and 2M hugepage is set
after "numa=off".
cmdline hugepage settings:
hugepagesz=1G hugepages=0:3,1:3
hugepagesz=2M hugepages=0:1024,1:1024
results:
HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
HugeTLB registered 2.00 MiB page size, pre-allocated 1024 pages

Furthermore, confusing behavior can be also observed when invalid
node behind valid node.

To fix this, hugetlb_hstate_alloc_pages should be called even when
hugepages_setup going to invalid.
Shouldn't we bail out if someone requests node-specific allocations but
we are not running with NUMA?

What's the result after your change?

Cc: <stable@xxxxxxxxxxxxxxx>
I am not sure if this is really stable material.

This change will make 1G-huge-page consistent with 2M-huge-page when
an invalid node is configured. After this patch, all per node huge pages
will allocate until an invalid node.

Thus, the basic question is "what will lead to an invalid node".
1) Some debugging and test cases as Mike suggested.
2) When part of physical memory or cpu is broken and bios not report
the node with physical damage, but still use the original grub.