set_pageblock_order() is a standalone function which sets pageblock_order, while current implementation calls this function on each ZONE of each node in free_area_init_core(). Since free_area_init_node() is the only user of free_area_init_core(), this patch moves set_pageblock_order() up one level to invoke set_pageblock_order() only once on each node. Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 8c964dcc3a9e..828f5014b006 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6169,7 +6169,6 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat) if (!size) continue; - set_pageblock_order(); setup_usemap(pgdat, zone, zone_start_pfn, size); init_currently_empty_zone(zone, zone_start_pfn, size); memmap_init(size, nid, j, zone_start_pfn); @@ -6254,6 +6253,7 @@ void __paginginit free_area_init_node(int nid, unsigned long *zones_size, alloc_node_mem_map(pgdat); reset_deferred_meminit(pgdat); + set_pageblock_order(); free_area_init_core(pgdat); } -- 2.15.1