* [PATCH v2] mm/mm_init: remove zone_absent_pages_in_node()
@ 2026-09-01 16:51 Sang-Heon Jeon
2026-09-01 18:36 ` Mike Rapoport
0 siblings, 1 reply; 2+ messages in thread
From: Sang-Heon Jeon @ 2026-09-01 16:51 UTC (permalink / raw)
To: Andrew Morton, Mike Rapoport; +Cc: linux-mm
zone_absent_pages_in_node() returns 0 when the zone is empty and
otherwise calls __absent_pages_in_range(), which already returns 0 for
an empty range.
So add an early return to __absent_pages_in_range() to avoid looping over
the memory ranges, then remove zone_absent_pages_in_node() and call
__absent_pages_in_range() directly.
No functional change.
Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com>
---
Changes from v1 [1]
- Add an early return to __absent_pages_in_range()
[1] https://lore.kernel.org/all/20260827144151.486192-1-ekffu200098@gmail.com/
---
mm/mm_init.c | 24 +++++++-----------------
1 file changed, 7 insertions(+), 17 deletions(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 1533aebafb68..c00ac947a7d6 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1166,6 +1166,10 @@ static unsigned long __init __absent_pages_in_range(int nid,
unsigned long start_pfn, end_pfn;
int i;
+ /* range is empty, nothing to do */
+ if (!nr_absent)
+ return 0;
+
for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) {
start_pfn = clamp(start_pfn, range_start_pfn, range_end_pfn);
end_pfn = clamp(end_pfn, range_start_pfn, range_end_pfn);
@@ -1187,22 +1191,9 @@ unsigned long __init absent_pages_in_range(unsigned long start_pfn,
return __absent_pages_in_range(MAX_NUMNODES, start_pfn, end_pfn);
}
-/* Return the number of page frames in holes in a zone on a node */
-static unsigned long __init zone_absent_pages_in_node(int nid,
- unsigned long zone_type,
- unsigned long zone_start_pfn,
- unsigned long zone_end_pfn)
-{
- /* zone is empty, we don't have any absent pages */
- if (zone_start_pfn == zone_end_pfn)
- return 0;
-
- return __absent_pages_in_range(nid, zone_start_pfn, zone_end_pfn);
-}
-
/*
* Return the number of pages a zone spans in a node, including holes
- * present_pages = zone_spanned_pages_in_node() - zone_absent_pages_in_node()
+ * present_pages = zone_spanned_pages_in_node() - __absent_pages_in_range()
*/
static unsigned long __init zone_spanned_pages_in_node(int nid,
unsigned long zone_type,
@@ -1292,9 +1283,8 @@ static void __init calculate_node_totalpages(struct pglist_data *pgdat,
node_end_pfn,
&zone_start_pfn,
&zone_end_pfn);
- absent = zone_absent_pages_in_node(pgdat->node_id, i,
- zone_start_pfn,
- zone_end_pfn);
+ absent = __absent_pages_in_range(pgdat->node_id, zone_start_pfn,
+ zone_end_pfn);
real_size = spanned - absent;
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] mm/mm_init: remove zone_absent_pages_in_node()
2026-09-01 16:51 [PATCH v2] mm/mm_init: remove zone_absent_pages_in_node() Sang-Heon Jeon
@ 2026-09-01 18:36 ` Mike Rapoport
0 siblings, 0 replies; 2+ messages in thread
From: Mike Rapoport @ 2026-09-01 18:36 UTC (permalink / raw)
To: Andrew Morton, Sang-Heon Jeon; +Cc: linux-mm
On Wed, 02 Sep 2026 01:51:49 +0900, Sang-Heon Jeon wrote:
> mm/mm_init: remove zone_absent_pages_in_node()
Applied to for-next branch of memblock.git tree, thanks!
[1/1] mm/mm_init: remove zone_absent_pages_in_node()
commit: dbffc67777cd752ef3f77818109e1d2ef13e2949
tree: https://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock
branch: for-next
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-01 18:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-01 16:51 [PATCH v2] mm/mm_init: remove zone_absent_pages_in_node() Sang-Heon Jeon
2026-09-01 18:36 ` Mike Rapoport
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox