On Tue, Jun 02, 2026 at 06:10:39PM +0800, Muchun Song wrote: > __init_page_from_nid() no longer has external users and is only used > locally in mm/mm_init.c under CONFIG_DEFERRED_STRUCT_PAGE_INIT. > > Fold it into its sole caller __init_deferred_page() and remove the > separate helper declaration. > > Signed-off-by: Muchun Song <[email protected]> > --- > v2->v3: > - fold __init_page_from_nid() into __init_deferred_page() since it > only has a single caller (suggested by Mike Rapoport) > --- > mm/internal.h | 1 - > mm/mm_init.c | 44 ++++++++++++++++++-------------------------- > 2 files changed, 18 insertions(+), 27 deletions(-) > > diff --git a/mm/internal.h b/mm/internal.h > index 8497673d0ac3..b33fc87e4555 100644 > --- a/mm/internal.h > +++ b/mm/internal.h > @@ -1760,7 +1760,6 @@ static inline bool pte_needs_soft_dirty_wp(struct > vm_area_struct *vma, pte_t pte > > void __meminit __init_single_page(struct page *page, unsigned long pfn, > unsigned long zone, int nid); > -void __meminit __init_page_from_nid(unsigned long pfn, int nid); > > /* shrinker related functions */ > unsigned long shrink_slab(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg, > diff --git a/mm/mm_init.c b/mm/mm_init.c > index 41b83dd18c01..f1bbf3b9a321 100644 > --- a/mm/mm_init.c > +++ b/mm/mm_init.c > @@ -688,31 +688,6 @@ static __meminit void > pageblock_migratetype_init_range(unsigned long pfn, > } > #endif > > -/* > - * Initialize a reserved page unconditionally, finding its zone first. > - */ > -void __meminit __init_page_from_nid(unsigned long pfn, int nid) > -{ > - pg_data_t *pgdat; > - int zid; > - > - pgdat = NODE_DATA(nid); > - > - for (zid = 0; zid < MAX_NR_ZONES; zid++) { > - struct zone *zone = &pgdat->node_zones[zid]; > - > - if (zone_spans_pfn(zone, pfn)) > - break; > - } > - __init_single_page(pfn_to_page(pfn), pfn, zid, nid); > - > - if (pageblock_aligned(pfn)) { > - enum migratetype mt = > - kho_scratch_migratetype(pfn, MIGRATE_MOVABLE); > - init_pageblock_migratetype(pfn_to_page(pfn), mt, false); > - } > -} > - > #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT > static inline void pgdat_set_deferred_range(pg_data_t *pgdat) > { > @@ -771,10 +746,27 @@ defer_init(int nid, unsigned long pfn, unsigned long > end_pfn) > > static void __meminit __init_deferred_page(unsigned long pfn, int nid) > { > + pg_data_t *pgdat; > + int zid; > + > if (early_page_initialised(pfn, nid)) > return; > > - __init_page_from_nid(pfn, nid); > + pgdat = NODE_DATA(nid);
Nit: we can initialize pgdat at declaration line, other than that Reviewed-by: Mike Rapoport (Microsoft) <[email protected]> > + > + for (zid = 0; zid < MAX_NR_ZONES; zid++) { > + struct zone *zone = &pgdat->node_zones[zid]; > + > + if (zone_spans_pfn(zone, pfn)) > + break; > + } > + __init_single_page(pfn_to_page(pfn), pfn, zid, nid); > + > + if (pageblock_aligned(pfn)) { > + enum migratetype mt = > + kho_scratch_migratetype(pfn, MIGRATE_MOVABLE); > + init_pageblock_migratetype(pfn_to_page(pfn), mt, false); > + } > } > #else > static inline void pgdat_set_deferred_range(pg_data_t *pgdat) {} > -- > 2.54.0 > > -- Sincerely yours, Mike.
