diff options
| author | Sang-Heon Jeon <ekffu200098@gmail.com> | 2026-09-02 01:51:49 +0900 |
|---|---|---|
| committer | Mike Rapoport (Microsoft) <rppt@kernel.org> | 2026-09-01 21:36:44 +0300 |
| commit | dbffc67777cd752ef3f77818109e1d2ef13e2949 (patch) | |
| tree | 5e25141c718dc5f19028be50eca1e978594886d9 | |
| parent | c1a6b4ca3b68ef794f5e754af00592721dddc10d (diff) | |
| download | linux-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.c | 24 |
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; |
