Re: [PATCH] mm/page_ext: remove pgdat_page_ext_init()

"Zi Yan" <[email protected]> Mon, 03 Aug 2026 21:35:17 -0400
Newsgroups org.kvack.linux-mm
Message-ID <[email protected]>
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.

> 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 {
> =20
>  extern bool early_page_ext;
>  extern unsigned long page_ext_size;
> -extern void pgdat_page_ext_init(struct pglist_data *pgdat);
> =20
>  static inline bool early_page_ext_enabled(void)
>  {
> @@ -202,10 +201,6 @@ static inline bool early_page_ext_enabled(void)
>  	return false;
>  }
> =20
> -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 p=
glist_data *pgdat)
>  	for (i =3D 0; i < NR_VMSCAN_THROTTLE; i++)
>  		init_waitqueue_head(&pgdat->reclaim_wait[i]);
> =20
> -	pgdat_page_ext_init(pgdat);
>  	lruvec_init(&pgdat->__lruvec);
>  }
> =20
> 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();
>  }
> =20
> -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");
>  }
> =20
> -void __meminit pgdat_page_ext_init(struct pglist_data *pgdat)
> -{
> -}
> -
>  #endif
> =20
>  /**




--=20
Best Regards,
Yan, Zi