]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
memblock: drop for_each_free_mem_pfn_range_in_zone_from()
authorMike Rapoport (Microsoft) <rppt@kernel.org>
Mon, 18 Aug 2025 06:46:15 +0000 (09:46 +0300)
committerMike Rapoport (Microsoft) <rppt@kernel.org>
Sun, 14 Sep 2025 05:49:03 +0000 (08:49 +0300)
for_each_free_mem_pfn_range_in_zone_from() and its "backend" implementation
__next_mem_pfn_range_in_zone() were only used by deferred initialization of
the memory map.

Remove them as they are not used anymore.

Reviewed-by: Wei Yang <richard.weiyang@gmail.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
.clang-format
include/linux/memblock.h
mm/memblock.c

index 48405c54ef271e9546da08893d200a4cf48f3a55..f371a13b4d192d2e37d7017b63e33dfa7c67378f 100644 (file)
@@ -294,7 +294,6 @@ ForEachMacros:
   - 'for_each_fib6_node_rt_rcu'
   - 'for_each_fib6_walker_rt'
   - 'for_each_file_lock'
-  - 'for_each_free_mem_pfn_range_in_zone_from'
   - 'for_each_free_mem_range'
   - 'for_each_free_mem_range_reverse'
   - 'for_each_func_rsrc'
index fcda8481de9a91ad17b5c746e5887eb571fbe291..221118b5a16e1be0020d6236a9128b4c29d3a5f3 100644 (file)
@@ -324,28 +324,6 @@ void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn,
        for (i = -1, __next_mem_pfn_range(&i, nid, p_start, p_end, p_nid); \
             i >= 0; __next_mem_pfn_range(&i, nid, p_start, p_end, p_nid))
 
-#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
-void __next_mem_pfn_range_in_zone(u64 *idx, struct zone *zone,
-                                 unsigned long *out_spfn,
-                                 unsigned long *out_epfn);
-
-/**
- * for_each_free_mem_pfn_range_in_zone_from - iterate through zone specific
- * free memblock areas from a given point
- * @i: u64 used as loop variable
- * @zone: zone in which all of the memory blocks reside
- * @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
- * @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
- *
- * Walks over free (memory && !reserved) areas of memblock in a specific
- * zone, continuing from current position. Available as soon as memblock is
- * initialized.
- */
-#define for_each_free_mem_pfn_range_in_zone_from(i, zone, p_start, p_end) \
-       for (; i != U64_MAX;                                      \
-            __next_mem_pfn_range_in_zone(&i, zone, p_start, p_end))
-
-#endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
 
 /**
  * for_each_free_mem_range - iterate through free memblock areas
index 117d963e677c93f89b00645a57ce4393d93184b6..120a501a887a01ea730fd9bc8fe0062499769b1b 100644 (file)
@@ -1445,70 +1445,6 @@ int __init_memblock memblock_set_node(phys_addr_t base, phys_addr_t size,
        return 0;
 }
 
-#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
-/**
- * __next_mem_pfn_range_in_zone - iterator for for_each_*_range_in_zone()
- *
- * @idx: pointer to u64 loop variable
- * @zone: zone in which all of the memory blocks reside
- * @out_spfn: ptr to ulong for start pfn of the range, can be %NULL
- * @out_epfn: ptr to ulong for end pfn of the range, can be %NULL
- *
- * This function is meant to be a zone/pfn specific wrapper for the
- * for_each_mem_range type iterators. Specifically they are used in the
- * deferred memory init routines and as such we were duplicating much of
- * this logic throughout the code. So instead of having it in multiple
- * locations it seemed like it would make more sense to centralize this to
- * one new iterator that does everything they need.
- */
-void __init_memblock
-__next_mem_pfn_range_in_zone(u64 *idx, struct zone *zone,
-                            unsigned long *out_spfn, unsigned long *out_epfn)
-{
-       int zone_nid = zone_to_nid(zone);
-       phys_addr_t spa, epa;
-
-       __next_mem_range(idx, zone_nid, MEMBLOCK_NONE,
-                        &memblock.memory, &memblock.reserved,
-                        &spa, &epa, NULL);
-
-       while (*idx != U64_MAX) {
-               unsigned long epfn = PFN_DOWN(epa);
-               unsigned long spfn = PFN_UP(spa);
-
-               /*
-                * Verify the end is at least past the start of the zone and
-                * that we have at least one PFN to initialize.
-                */
-               if (zone->zone_start_pfn < epfn && spfn < epfn) {
-                       /* if we went too far just stop searching */
-                       if (zone_end_pfn(zone) <= spfn) {
-                               *idx = U64_MAX;
-                               break;
-                       }
-
-                       if (out_spfn)
-                               *out_spfn = max(zone->zone_start_pfn, spfn);
-                       if (out_epfn)
-                               *out_epfn = min(zone_end_pfn(zone), epfn);
-
-                       return;
-               }
-
-               __next_mem_range(idx, zone_nid, MEMBLOCK_NONE,
-                                &memblock.memory, &memblock.reserved,
-                                &spa, &epa, NULL);
-       }
-
-       /* signal end of iteration */
-       if (out_spfn)
-               *out_spfn = ULONG_MAX;
-       if (out_epfn)
-               *out_epfn = 0;
-}
-
-#endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
-
 /**
  * memblock_alloc_range_nid - allocate boot memory block
  * @size: size of memory block to be allocated in bytes