]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
hugetlb: optimise hugetlb_folio_init_tail_vmemmap()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 6 Nov 2025 20:14:48 +0000 (20:14 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 20 Nov 2025 21:43:57 +0000 (13:43 -0800)
Extract the zone number directly from the folio instead of using the
folio's zone number to look up the zone and asking the zone what its
number is.

Also we should use &folio->page instead of casting from folio to page

Link: https://lkml.kernel.org/r/20251106201452.2292631-1-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: David Hildenbrand <david@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/hugetlb.c

index 1ea459723cce69184d35ede76a340da5cc36df3a..ac5ce2b2b87d516570592f301481ce4b0b357868 100644 (file)
@@ -3246,7 +3246,7 @@ static void __init hugetlb_folio_init_tail_vmemmap(struct folio *folio,
                                        unsigned long start_page_number,
                                        unsigned long end_page_number)
 {
-       enum zone_type zone = zone_idx(folio_zone(folio));
+       enum zone_type zone = folio_zonenum(folio);
        int nid = folio_nid(folio);
        struct page *page = folio_page(folio, start_page_number);
        unsigned long head_pfn = folio_pfn(folio);
@@ -3279,7 +3279,7 @@ static void __init hugetlb_folio_init_vmemmap(struct folio *folio,
        ret = folio_ref_freeze(folio, 1);
        VM_BUG_ON(!ret);
        hugetlb_folio_init_tail_vmemmap(folio, 1, nr_pages);
-       prep_compound_head((struct page *)folio, huge_page_order(h));
+       prep_compound_head(&folio->page, huge_page_order(h));
 }
 
 static bool __init hugetlb_bootmem_page_prehvo(struct huge_bootmem_page *m)