On Fri, Jul 12, 2019 at 10:51:31AM +0200, KarimAllah Ahmed wrote: >Do not mark regions that are marked with nomap to be present, otherwise >these memblock cause unnecessarily allocation of metadata. > >Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> >Cc: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> >Cc: Oscar Salvador <osalvador@xxxxxxx> >Cc: Michal Hocko <mhocko@xxxxxxxx> >Cc: Mike Rapoport <rppt@xxxxxxxxxxxxx> >Cc: Baoquan He <bhe@xxxxxxxxxx> >Cc: Qian Cai <cai@xxxxxx> >Cc: Wei Yang <richard.weiyang@xxxxxxxxx> >Cc: Logan Gunthorpe <logang@xxxxxxxxxxxx> >Cc: linux-mm@xxxxxxxxx >Cc: linux-kernel@xxxxxxxxxxxxxxx >Signed-off-by: KarimAllah Ahmed <karahmed@xxxxxxxxx> >--- > mm/sparse.c | 4 ++++ > 1 file changed, 4 insertions(+) > >diff --git a/mm/sparse.c b/mm/sparse.c >index fd13166..33810b6 100644 >--- a/mm/sparse.c >+++ b/mm/sparse.c >@@ -256,6 +256,10 @@ void __init memblocks_present(void) > struct memblock_region *reg; > > for_each_memblock(memory, reg) { >+ >+ if (memblock_is_nomap(reg)) >+ continue; >+ > memory_present(memblock_get_region_node(reg), > memblock_region_memory_base_pfn(reg), > memblock_region_memory_end_pfn(reg)); The logic looks good, while I am not sure this would take effect. Since the metadata is SECTION size aligned while memblock is not. If I am correct, on arm64, we mark nomap memblock in map_mem() memblock_mark_nomap(kernel_start, kernel_end - kernel_start); And kernel text area is less than 40M, if I am right. This means memblocks_present would still mark the section present. Would you mind showing how much memory range it is marked nomap? >-- >2.7.4 -- Wei Yang Help you, Help me