[PATCH v2 15/17] mm/hugetlb: remove HUGE_BOOTMEM_CMA
From: Muchun Song
Date: Mon Jul 20 2026 - 05:40:38 EST
Track early CMA hugetlb pages from the hstate instead of storing a
redundant bootmem flag. This removes the unused helper and keeps the
bootmem metadata minimal.
Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
Acked-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
---
v2:
- Collect Acked-by from Mike Rapoport
---
include/linux/hugetlb.h | 1 -
mm/hugetlb.c | 14 ++++----------
2 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 3559041a5a57..255a258f11d1 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -676,7 +676,6 @@ struct hstate {
};
#define HUGE_BOOTMEM_ZONES_VALID BIT(0)
-#define HUGE_BOOTMEM_CMA BIT(1)
int isolate_or_dissolve_huge_folio(struct folio *folio, struct list_head *list);
int replace_free_hugepage_folios(unsigned long start_pfn, unsigned long end_pfn);
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index c03c5c805cd7..d0c726845fb9 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -3134,7 +3134,7 @@ static bool __init alloc_bootmem_huge_page(struct hstate *h, int nid)
*/
INIT_LIST_HEAD(&m->list);
m->hstate = h;
- m->flags = hugetlb_early_cma(h) ? HUGE_BOOTMEM_CMA : 0;
+ m->flags = 0;
/* CMA pages: zone-crossing is validated in hugetlb_cma_reserve(). */
if (!hugetlb_early_cma(h) &&
@@ -3210,11 +3210,6 @@ static void __init hugetlb_folio_init_vmemmap(struct folio *folio,
prep_compound_head(&folio->page, huge_page_order(h));
}
-static bool __init hugetlb_bootmem_page_earlycma(struct huge_bootmem_page *m)
-{
- return m->flags & HUGE_BOOTMEM_CMA;
-}
-
/*
* memblock-allocated pageblocks might not have the migrate type set
* if marked with the 'noinit' flag. Set it to the default (MIGRATE_MOVABLE)
@@ -3305,9 +3300,6 @@ static void __init gather_bootmem_prealloc_node(unsigned long nid)
folio_set_hugetlb_vmemmap_optimized(folio);
section_set_order_range(folio_pfn(folio), folio_nr_pages(folio), 0);
- if (hugetlb_bootmem_page_earlycma(m))
- folio_set_hugetlb_cma(folio);
-
list_add(&folio->lru, &folio_list);
/*
@@ -3318,7 +3310,9 @@ static void __init gather_bootmem_prealloc_node(unsigned long nid)
* For CMA pages, this is done in init_cma_pageblock
* (via hugetlb_bootmem_init_migratetype), so skip it here.
*/
- if (!folio_test_hugetlb_cma(folio))
+ if (hugetlb_early_cma(h))
+ folio_set_hugetlb_cma(folio);
+ else
adjust_managed_page_count(page, pages_per_huge_page(h));
cond_resched();
}
--
2.54.0