Re: [PATCH] mm/page_ext: remove pgdat_page_ext_init()
Sang-Heon Jeon <[email protected]> Tue, 4 Aug 2026 13:17:01 +0900
| Newsgroups | org.kvack.linux-mm |
|---|---|
| Message-ID | <CABFDxMGbdkJwv-jPnfVww1Z+wg=+1x6sT5bH1dvxY3N==gJhSQ@mail.gmail.com> |
Hello, On Tue, Aug 4, 2026 at 10:35=E2=80=AFAM Zi Yan <[email protected]> wrote: > > On Mon Aug 3, 2026 at 9:48 AM EDT, Sang-Heon Jeon wrote: > > pgdat_page_ext_init() sets pgdat->node_page_ext to NULL only on > > FLATMEM. FLATMEM depends on !NUMA on every architecture, so the > > Should we add "depends on !NUMA" to FLATMEM and FLATMEM_MANUAL to > prevent FLATMEM + NUMA being possible? Otherwise, FLATMEM + NUMA can > have issues with pgdat_page_ext_init() being removed. I understand that > no arch supports FLATMEM + NUMA. Indeed. Existing NUMA code depends on SPARSEMEM-only macro, So FLATMEM + NUMA is not buildable. Making the constraint explicit sounds good to me. I will address it in v2. > > pgdat is always the zero-initialized contig_page_data and the store > > has no effect. > > > > So remove the call site, the unused function and its declaration. > > > > No functional change. > > > > Signed-off-by: Sang-Heon Jeon <[email protected]> > > --- > > include/linux/page_ext.h | 5 ----- > > mm/mm_init.c | 1 - > > mm/page_ext.c | 9 --------- > > 3 files changed, 15 deletions(-) > > > > diff --git a/include/linux/page_ext.h b/include/linux/page_ext.h > > index f23d4b218da0..79c53ec45dfa 100644 > > --- a/include/linux/page_ext.h > > +++ b/include/linux/page_ext.h > > @@ -55,7 +55,6 @@ struct page_ext { > > > > extern bool early_page_ext; > > extern unsigned long page_ext_size; > > -extern void pgdat_page_ext_init(struct pglist_data *pgdat); > > > > static inline bool early_page_ext_enabled(void) > > { > > @@ -202,10 +201,6 @@ static inline bool early_page_ext_enabled(void) > > return false; > > } > > > > -static inline void pgdat_page_ext_init(struct pglist_data *pgdat) > > -{ > > -} > > - > > static inline void page_ext_init(void) > > { > > } > > diff --git a/mm/mm_init.c b/mm/mm_init.c > > index 711f821f7b3c..e9c4204b73ad 100644 > > --- a/mm/mm_init.c > > +++ b/mm/mm_init.c > > @@ -1394,7 +1394,6 @@ static void __meminit pgdat_init_internals(struct= pglist_data *pgdat) > > for (i =3D 0; i < NR_VMSCAN_THROTTLE; i++) > > init_waitqueue_head(&pgdat->reclaim_wait[i]); > > > > - pgdat_page_ext_init(pgdat); > > lruvec_init(&pgdat->__lruvec); > > } > > > > diff --git a/mm/page_ext.c b/mm/page_ext.c > > index e2e92bd27ebd..b679a8c1f7d7 100644 > > --- a/mm/page_ext.c > > +++ b/mm/page_ext.c > > @@ -164,11 +164,6 @@ void __init page_ext_init_flatmem_late(void) > > invoke_init_callbacks(); > > } > > > > -void __meminit pgdat_page_ext_init(struct pglist_data *pgdat) > > -{ > > - pgdat->node_page_ext =3D NULL; > > -} > > - > > static struct page_ext *lookup_page_ext(const struct page *page) > > { > > unsigned long pfn =3D page_to_pfn(page); > > @@ -494,10 +489,6 @@ void __init page_ext_init(void) > > panic("Out of memory"); > > } > > > > -void __meminit pgdat_page_ext_init(struct pglist_data *pgdat) > > -{ > > -} > > - > > #endif > > > > /** > > > > > -- > Best Regards, > Yan, Zi > Best Regards, Sang-Heon Jeon