Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm/page_ext: remove pgdat_page_ext_init()
@ 2026-08-03 13:48 Sang-Heon Jeon
  2026-08-04  1:35 ` Zi Yan
  0 siblings, 1 reply; 3+ messages in thread
From: Sang-Heon Jeon @ 2026-08-03 13:48 UTC (permalink / raw)
  To: Andrew Morton, David Hildenbrand, Mike Rapoport, Vlastimil Babka
  Cc: Brendan Jackman, Johannes Weiner, Liam R. Howlett, linux-mm,
	Lorenzo Stoakes, Michal Hocko, Suren Baghdasaryan, Zi Yan

pgdat_page_ext_init() sets pgdat->node_page_ext to NULL only on
FLATMEM. FLATMEM depends on !NUMA on every architecture, so the
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 <ekffu200098@gmail.com>
---
 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 = 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 = NULL;
-}
-
 static struct page_ext *lookup_page_ext(const struct page *page)
 {
 	unsigned long pfn = 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
 
 /**
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] mm/page_ext: remove pgdat_page_ext_init()
  2026-08-03 13:48 [PATCH] mm/page_ext: remove pgdat_page_ext_init() Sang-Heon Jeon
@ 2026-08-04  1:35 ` Zi Yan
  2026-08-04  4:17   ` Sang-Heon Jeon
  0 siblings, 1 reply; 3+ messages in thread
From: Zi Yan @ 2026-08-04  1:35 UTC (permalink / raw)
  To: Sang-Heon Jeon, Andrew Morton, David Hildenbrand, Mike Rapoport,
	Vlastimil Babka
  Cc: Brendan Jackman, Johannes Weiner, Liam R. Howlett, linux-mm,
	Lorenzo Stoakes, Michal Hocko, Suren Baghdasaryan

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 <ekffu200098@gmail.com>
> ---
>  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 = 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 = NULL;
> -}
> -
>  static struct page_ext *lookup_page_ext(const struct page *page)
>  {
>  	unsigned long pfn = 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



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] mm/page_ext: remove pgdat_page_ext_init()
  2026-08-04  1:35 ` Zi Yan
@ 2026-08-04  4:17   ` Sang-Heon Jeon
  0 siblings, 0 replies; 3+ messages in thread
From: Sang-Heon Jeon @ 2026-08-04  4:17 UTC (permalink / raw)
  To: Zi Yan
  Cc: Andrew Morton, David Hildenbrand, Mike Rapoport, Vlastimil Babka,
	Brendan Jackman, Johannes Weiner, Liam R. Howlett, linux-mm,
	Lorenzo Stoakes, Michal Hocko, Suren Baghdasaryan

Hello,

On Tue, Aug 4, 2026 at 10:35 AM Zi Yan <ziy@nvidia.com> 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 <ekffu200098@gmail.com>
> > ---
> >  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 = 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 = NULL;
> > -}
> > -
> >  static struct page_ext *lookup_page_ext(const struct page *page)
> >  {
> >       unsigned long pfn = 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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-04  4:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-03 13:48 [PATCH] mm/page_ext: remove pgdat_page_ext_init() Sang-Heon Jeon
2026-08-04  1:35 ` Zi Yan
2026-08-04  4:17   ` Sang-Heon Jeon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox