bootmem: Move __alloc_memory_core_early() to nobootmem.c
Now that bootmem.c and nobootmem.c are separate, there's no reason to define __alloc_memory_core_early(), which is used only by nobootmem, inside #ifdef in page_alloc.c. Move it to nobootmem.c and make it static. This patch doesn't introduce any behavior change. -tj: Updated commit description. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Acked-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -1309,8 +1309,6 @@ int add_from_early_node_map(struct range *range, int az,
|
|||||||
int nr_range, int nid);
|
int nr_range, int nid);
|
||||||
u64 __init find_memory_core_early(int nid, u64 size, u64 align,
|
u64 __init find_memory_core_early(int nid, u64 size, u64 align,
|
||||||
u64 goal, u64 limit);
|
u64 goal, u64 limit);
|
||||||
void *__alloc_memory_core_early(int nodeid, u64 size, u64 align,
|
|
||||||
u64 goal, u64 limit);
|
|
||||||
typedef int (*work_fn_t)(unsigned long, unsigned long, void *);
|
typedef int (*work_fn_t)(unsigned long, unsigned long, void *);
|
||||||
extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data);
|
extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data);
|
||||||
extern void sparse_memory_present_with_active_regions(int nid);
|
extern void sparse_memory_present_with_active_regions(int nid);
|
||||||
|
@@ -40,6 +40,31 @@ unsigned long max_pfn;
|
|||||||
unsigned long saved_max_pfn;
|
unsigned long saved_max_pfn;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void * __init __alloc_memory_core_early(int nid, u64 size, u64 align,
|
||||||
|
u64 goal, u64 limit)
|
||||||
|
{
|
||||||
|
void *ptr;
|
||||||
|
u64 addr;
|
||||||
|
|
||||||
|
if (limit > memblock.current_limit)
|
||||||
|
limit = memblock.current_limit;
|
||||||
|
|
||||||
|
addr = find_memory_core_early(nid, size, align, goal, limit);
|
||||||
|
|
||||||
|
if (addr == MEMBLOCK_ERROR)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
ptr = phys_to_virt(addr);
|
||||||
|
memset(ptr, 0, size);
|
||||||
|
memblock_x86_reserve_range(addr, addr + size, "BOOTMEM");
|
||||||
|
/*
|
||||||
|
* The min_count is set to 0 so that bootmem allocated blocks
|
||||||
|
* are never reported as leaks.
|
||||||
|
*/
|
||||||
|
kmemleak_alloc(ptr, size, 0, 0);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* free_bootmem_late - free bootmem pages directly to page allocator
|
* free_bootmem_late - free bootmem pages directly to page allocator
|
||||||
* @addr: starting address of the range
|
* @addr: starting address of the range
|
||||||
|
@@ -3780,34 +3780,6 @@ int __init add_from_early_node_map(struct range *range, int az,
|
|||||||
return nr_range;
|
return nr_range;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NO_BOOTMEM
|
|
||||||
void * __init __alloc_memory_core_early(int nid, u64 size, u64 align,
|
|
||||||
u64 goal, u64 limit)
|
|
||||||
{
|
|
||||||
void *ptr;
|
|
||||||
u64 addr;
|
|
||||||
|
|
||||||
if (limit > memblock.current_limit)
|
|
||||||
limit = memblock.current_limit;
|
|
||||||
|
|
||||||
addr = find_memory_core_early(nid, size, align, goal, limit);
|
|
||||||
|
|
||||||
if (addr == MEMBLOCK_ERROR)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
ptr = phys_to_virt(addr);
|
|
||||||
memset(ptr, 0, size);
|
|
||||||
memblock_x86_reserve_range(addr, addr + size, "BOOTMEM");
|
|
||||||
/*
|
|
||||||
* The min_count is set to 0 so that bootmem allocated blocks
|
|
||||||
* are never reported as leaks.
|
|
||||||
*/
|
|
||||||
kmemleak_alloc(ptr, size, 0, 0);
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void __init work_with_active_regions(int nid, work_fn_t work_fn, void *data)
|
void __init work_with_active_regions(int nid, work_fn_t work_fn, void *data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
Reference in New Issue
Block a user