Commit 9def36e0 authored by Logan Gunthorpe's avatar Logan Gunthorpe Committed by Linus Torvalds

mm/sparse: add common helper to mark all memblocks present

Presently the arches arm64, arm and sh have a function which loops
through each memblock and calls memory present.  riscv will require a
similar function.

Introduce a common memblocks_present() function that can be used by all
the arches.  Subsequent patches will cleanup the arches that make use of
this.

Link: http://lkml.kernel.org/r/20181107205433.3875-3-logang@deltatee.comSigned-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Oscar Salvador <osalvador@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d1402fc7
...@@ -783,6 +783,12 @@ void memory_present(int nid, unsigned long start, unsigned long end); ...@@ -783,6 +783,12 @@ void memory_present(int nid, unsigned long start, unsigned long end);
static inline void memory_present(int nid, unsigned long start, unsigned long end) {} static inline void memory_present(int nid, unsigned long start, unsigned long end) {}
#endif #endif
#if defined(CONFIG_SPARSEMEM)
void memblocks_present(void);
#else
static inline void memblocks_present(void) {}
#endif
#ifdef CONFIG_HAVE_MEMORYLESS_NODES #ifdef CONFIG_HAVE_MEMORYLESS_NODES
int local_memory_node(int node_id); int local_memory_node(int node_id);
#else #else
......
...@@ -239,6 +239,22 @@ void __init memory_present(int nid, unsigned long start, unsigned long end) ...@@ -239,6 +239,22 @@ void __init memory_present(int nid, unsigned long start, unsigned long end)
} }
} }
/*
* Mark all memblocks as present using memory_present(). This is a
* convienence function that is useful for a number of arches
* to mark all of the systems memory as present during initialization.
*/
void __init memblocks_present(void)
{
struct memblock_region *reg;
for_each_memblock(memory, reg) {
memory_present(memblock_get_region_node(reg),
memblock_region_memory_base_pfn(reg),
memblock_region_memory_end_pfn(reg));
}
}
/* /*
* Subtle, we encode the real pfn into the mem_map such that * Subtle, we encode the real pfn into the mem_map such that
* the identity pfn - section_mem_map will return the actual * the identity pfn - section_mem_map will return the actual
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment