mirror of
https://github.com/torvalds/linux.git
synced 2025-10-29 15:56:19 +02:00
memblock: drop for_each_free_mem_pfn_range_in_zone_from()
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>
This commit is contained in:
parent
219f624d06
commit
e68f150bc1
3 changed files with 0 additions and 87 deletions
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue