The patch titled Subject: mm/sparse: add common helper to mark all memblocks present has been added to the -mm tree. Its filename is mm-sparse-add-common-helper-to-mark-all-memblocks-present.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-sparse-add-common-helper-to-mark-all-memblocks-present.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-sparse-add-common-helper-to-mark-all-memblocks-present.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Logan Gunthorpe <logang@xxxxxxxxxxxx> Subject: 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@xxxxxxxxxxxx Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx> Acked-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Cc: Oscar Salvador <osalvador@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/mmzone.h | 6 ++++++ mm/sparse.c | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) --- a/include/linux/mmzone.h~mm-sparse-add-common-helper-to-mark-all-memblocks-present +++ a/include/linux/mmzone.h @@ -783,6 +783,12 @@ void memory_present(int nid, unsigned lo static inline void memory_present(int nid, unsigned long start, unsigned long end) {} #endif +#if defined(CONFIG_SPARSEMEM) +void memblocks_present(void); +#else +static inline void memblocks_present(void) {} +#endif + #ifdef CONFIG_HAVE_MEMORYLESS_NODES int local_memory_node(int node_id); #else --- a/mm/sparse.c~mm-sparse-add-common-helper-to-mark-all-memblocks-present +++ a/mm/sparse.c @@ -240,6 +240,22 @@ void __init memory_present(int nid, unsi } /* + * 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 * the identity pfn - section_mem_map will return the actual * physical page frame number. _ Patches currently in -mm which might be from logang@xxxxxxxxxxxx are mm-introduce-common-struct_page_max_shift-define.patch mm-sparse-add-common-helper-to-mark-all-memblocks-present.patch