Messages in this thread | | | Date | Fri, 12 Jul 2019 23:09:13 +0000 | From | Wei Yang <> | Subject | Re: [PATCH] mm: sparse: Skip no-map regions in memblocks_present |
| |
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@linux-foundation.org> >Cc: Pavel Tatashin <pasha.tatashin@oracle.com> >Cc: Oscar Salvador <osalvador@suse.de> >Cc: Michal Hocko <mhocko@suse.com> >Cc: Mike Rapoport <rppt@linux.ibm.com> >Cc: Baoquan He <bhe@redhat.com> >Cc: Qian Cai <cai@lca.pw> >Cc: Wei Yang <richard.weiyang@gmail.com> >Cc: Logan Gunthorpe <logang@deltatee.com> >Cc: linux-mm@kvack.org >Cc: linux-kernel@vger.kernel.org >Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de> >--- > 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
| |