summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSang-Heon Jeon <ekffu200098@gmail.com>2026-09-02 01:51:49 +0900
committerMike Rapoport (Microsoft) <rppt@kernel.org>2026-09-01 21:36:44 +0300
commitdbffc67777cd752ef3f77818109e1d2ef13e2949 (patch)
tree5e25141c718dc5f19028be50eca1e978594886d9
parentc1a6b4ca3b68ef794f5e754af00592721dddc10d (diff)
downloadlinux-next-dbffc67777cd752ef3f77818109e1d2ef13e2949.tar.gz
linux-next-dbffc67777cd752ef3f77818109e1d2ef13e2949.zip
mm/mm_init: remove zone_absent_pages_in_node()
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> Link: https://patch.msgid.link/20260901165205.1025640-1-ekffu200098@gmail.com Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
-rw-r--r--mm/mm_init.c24
1 files 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;