From d9c9a0b9729c35c96ef7bee4ded56d9441bebd58 Mon Sep 17 00:00:00 2001 From: Michal Hocko Date: Wed, 6 Sep 2017 16:20:20 -0700 Subject: mm, page_alloc: do not set_cpu_numa_mem on empty nodes initialization __build_all_zonelists reinitializes each online cpu local node for CONFIG_HAVE_MEMORYLESS_NODES. This makes sense because previously memory less nodes could gain some memory during memory hotplug and so the local node should be changed for CPUs close to such a node. It makes less sense to do that unconditionally for a newly creaded NUMA node which is still offline and without any memory. Let's also simplify the cpu loop and use for_each_online_cpu instead of an explicit cpu_online check for all possible cpus. Link: http://lkml.kernel.org/r/20170721143915.14161-4-mhocko@kernel.org Signed-off-by: Michal Hocko Acked-by: Mel Gorman Acked-by: Vlastimil Babka Cc: Johannes Weiner Cc: Joonsoo Kim Cc: Shaohua Li Cc: Toshi Kani Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- mm/page_alloc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'mm/page_alloc.c') diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 94e64784a8be..94fb4370e000 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5160,10 +5160,8 @@ static int __build_all_zonelists(void *data) build_zonelists(pgdat); } - } #ifdef CONFIG_HAVE_MEMORYLESS_NODES - for_each_possible_cpu(cpu) { /* * We now know the "local memory node" for each node-- * i.e., the node of the first zone in the generic zonelist. @@ -5172,10 +5170,10 @@ static int __build_all_zonelists(void *data) * secondary cpus' numa_mem as they come on-line. During * node/memory hotplug, we'll fixup all on-line cpus. */ - if (cpu_online(cpu)) + for_each_online_cpu(cpu) set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu))); - } #endif + } return 0; } -- cgit v1.2.3