Vmemmap optimization is no longer hugetlb-specific, so the remaining
hugetlb-local reserve macros are redundant.

Replace them with the generic definitions to remove duplication and keep
the hugetlb vmemmap code aligned with the common optimization macros.

Signed-off-by: Muchun Song <[email protected]>
---
 mm/hugetlb.c         |  4 ++--
 mm/hugetlb_vmemmap.c | 14 +++++++-------
 mm/hugetlb_vmemmap.h |  9 +--------
 3 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 53448b05ca11..8debe5c5abce 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -3222,7 +3222,7 @@ static void __init prep_and_add_bootmem_folios(struct 
hstate *h,
                         * be no contention.
                         */
                        hugetlb_folio_init_tail_vmemmap(folio, h,
-                                       HUGETLB_VMEMMAP_RESERVE_PAGES,
+                                       OPTIMIZED_FOLIO_VMEMMAP_NR_STRUCT_PAGES,
                                        pages_per_huge_page(h));
                }
                hugetlb_bootmem_init_migratetype(folio, h);
@@ -3261,7 +3261,7 @@ static void __init gather_bootmem_prealloc_node(unsigned 
long nid)
                WARN_ON(folio_ref_count(folio) != 1);
 
                hugetlb_folio_init_vmemmap(folio, h,
-                                          HUGETLB_VMEMMAP_RESERVE_PAGES);
+                                          
OPTIMIZED_FOLIO_VMEMMAP_NR_STRUCT_PAGES);
                init_new_hugetlb_folio(folio);
 
                if (hugetlb_bootmem_page_prehvo(m))
diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c
index e9906d32a64c..4367118f8f57 100644
--- a/mm/hugetlb_vmemmap.c
+++ b/mm/hugetlb_vmemmap.c
@@ -407,7 +407,7 @@ static int __hugetlb_vmemmap_restore_folio(const struct 
hstate *h,
        vmemmap_start   = (unsigned long)&folio->page;
        vmemmap_end     = vmemmap_start + hugetlb_vmemmap_size(h);
 
-       vmemmap_start   += HUGETLB_VMEMMAP_RESERVE_SIZE;
+       vmemmap_start   += OPTIMIZED_FOLIO_VMEMMAP_SIZE;
 
        /*
         * The pages which the vmemmap virtual address range [@vmemmap_start,
@@ -637,10 +637,10 @@ static void __hugetlb_vmemmap_optimize_folios(struct 
hstate *h,
                        spfn = (unsigned long)&folio->page;
                        epfn = spfn + hugetlb_vmemmap_size(h);
                        vmemmap_wrprotect_hvo(spfn, epfn, folio_nid(folio),
-                                       HUGETLB_VMEMMAP_RESERVE_SIZE);
+                                       OPTIMIZED_FOLIO_VMEMMAP_SIZE);
                        
register_page_bootmem_memmap(pfn_to_section_nr(folio_pfn(folio)),
                                        &folio->page,
-                                       HUGETLB_VMEMMAP_RESERVE_PAGES);
+                                       
OPTIMIZED_FOLIO_VMEMMAP_NR_STRUCT_PAGES);
                        continue;
                }
 
@@ -779,9 +779,9 @@ void __init hugetlb_vmemmap_init_early(int nid)
                zone = pfn_to_zone(nid, pfn);
 
                if (vmemmap_populate_hvo(start, end, huge_page_order(m->hstate),
-                                        zone, HUGETLB_VMEMMAP_RESERVE_SIZE))
+                                        zone, OPTIMIZED_FOLIO_VMEMMAP_SIZE))
                        panic("Failed to allocate memmap for HugeTLB page\n");
-               
memmap_boot_pages_add(DIV_ROUND_UP(HUGETLB_VMEMMAP_RESERVE_SIZE, PAGE_SIZE));
+               memmap_boot_pages_add(OPTIMIZED_FOLIO_VMEMMAP_PAGES);
 
                pnum = pfn_to_section_nr(pfn);
                ns = psize / section_size;
@@ -826,8 +826,8 @@ static int __init hugetlb_vmemmap_init(void)
 {
        const struct hstate *h;
 
-       /* HUGETLB_VMEMMAP_RESERVE_SIZE should cover all used struct pages */
-       BUILD_BUG_ON(__NR_USED_SUBPAGE > HUGETLB_VMEMMAP_RESERVE_PAGES);
+       /* OPTIMIZED_FOLIO_VMEMMAP_SIZE should cover all used struct pages */
+       BUILD_BUG_ON(__NR_USED_SUBPAGE > 
OPTIMIZED_FOLIO_VMEMMAP_NR_STRUCT_PAGES);
 
        for_each_hstate(h) {
                if (hugetlb_vmemmap_optimizable(h)) {
diff --git a/mm/hugetlb_vmemmap.h b/mm/hugetlb_vmemmap.h
index 7ac49c52457d..66e11893d076 100644
--- a/mm/hugetlb_vmemmap.h
+++ b/mm/hugetlb_vmemmap.h
@@ -12,13 +12,6 @@
 #include <linux/io.h>
 #include <linux/memblock.h>
 
-/*
- * Reserve one vmemmap page, all vmemmap addresses are mapped to it. See
- * Documentation/mm/vmemmap_dedup.rst.
- */
-#define HUGETLB_VMEMMAP_RESERVE_SIZE   PAGE_SIZE
-#define HUGETLB_VMEMMAP_RESERVE_PAGES  (HUGETLB_VMEMMAP_RESERVE_SIZE / 
sizeof(struct page))
-
 #ifdef CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
 int hugetlb_vmemmap_restore_folio(const struct hstate *h, struct folio *folio);
 long hugetlb_vmemmap_restore_folios(const struct hstate *h,
@@ -43,7 +36,7 @@ static inline unsigned int hugetlb_vmemmap_size(const struct 
hstate *h)
  */
 static inline unsigned int hugetlb_vmemmap_optimizable_size(const struct 
hstate *h)
 {
-       int size = hugetlb_vmemmap_size(h) - HUGETLB_VMEMMAP_RESERVE_SIZE;
+       int size = hugetlb_vmemmap_size(h) - OPTIMIZED_FOLIO_VMEMMAP_SIZE;
 
        if (!is_power_of_2(sizeof(struct page)))
                return 0;
-- 
2.54.0


Reply via email to