mm/hugetlb: align cma on allocation order, not demotion order
authorFrank van der Linden <fvdl@google.com>
Tue, 30 Apr 2024 16:14:37 +0000 (16:14 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 7 May 2024 17:37:01 +0000 (10:37 -0700)
Align the CMA area for hugetlb gigantic pages to their size, not the size
that they can be demoted to.  Otherwise there might be misaligned sections
at the start and end of the CMA area that will never be used for hugetlb
page allocations.

Link: https://lkml.kernel.org/r/20240430161437.2100295-1-fvdl@google.com
Fixes: a01f43901cfb ("hugetlb: be sure to free demoted CMA pages to CMA")
Signed-off-by: Frank van der Linden <fvdl@google.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Muchun Song <muchun.song@linux.dev>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/hugetlb.c

index a7efb350f5d076fd3c3f4a13f3c108efba4395bf..33d175add04475a5a2664c8559888e4ecf757dd4 100644 (file)
@@ -7800,7 +7800,7 @@ void __init hugetlb_cma_reserve(int order)
                 * huge page demotion.
                 */
                res = cma_declare_contiguous_nid(0, size, 0,
-                                       PAGE_SIZE << HUGETLB_PAGE_ORDER,
+                                       PAGE_SIZE << order,
                                        HUGETLB_PAGE_ORDER, false, name,
                                        &hugetlb_cma[nid], nid);
                if (res) {