diff --git a/mm/mm_init.c b/mm/mm_init.c index 6f9b02ad4f2c..4ed4591dcdba 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -2681,16 +2681,12 @@ void __init __weak mem_init(void) void __init mm_core_init_early(void) { - int nid; - free_area_init(); hugetlb_cma_reserve(); hugetlb_bootmem_alloc(); sparse_init(); - for_each_node_state(nid, N_MEMORY) - sparse_vmemmap_init_nid_late(nid); memmap_init(); } diff --git a/mm/sparse.c b/mm/sparse.c index 324213d8bdcb..3917a47153d8 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -320,6 +320,7 @@ static void __init sparse_init_nid(int nid, unsigned long pnum_begin, } } sparse_usage_fini(); + sparse_vmemmap_init_nid_late(nid); } /*