mm, page_alloc: remove boot pageset initialization from memory hotplug
boot_pageset is a boot time hack which gets superseded by normal pagesets later in the boot process. It makes zero sense to reinitialize it again and again during memory hotplug. Link: http://lkml.kernel.org/r/20170721143915.14161-3-mhocko@kernel.org Signed-off-by: Michal Hocko <mhocko@suse.com> Acked-by: Mel Gorman <mgorman@suse.de> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Joonsoo Kim <js1304@gmail.com> Cc: Shaohua Li <shaohua.li@intel.com> Cc: Toshi Kani <toshi.kani@hpe.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c9bff3eebc
commit
afb6ebb3fa
|
@ -5141,7 +5141,7 @@ DEFINE_MUTEX(zonelists_mutex);
|
||||||
static int __build_all_zonelists(void *data)
|
static int __build_all_zonelists(void *data)
|
||||||
{
|
{
|
||||||
int nid;
|
int nid;
|
||||||
int cpu;
|
int __maybe_unused cpu;
|
||||||
pg_data_t *self = data;
|
pg_data_t *self = data;
|
||||||
|
|
||||||
#ifdef CONFIG_NUMA
|
#ifdef CONFIG_NUMA
|
||||||
|
@ -5162,6 +5162,31 @@ static int __build_all_zonelists(void *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#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.
|
||||||
|
* Set up numa_mem percpu variable for on-line cpus. During
|
||||||
|
* boot, only the boot cpu should be on-line; we'll init the
|
||||||
|
* secondary cpus' numa_mem as they come on-line. During
|
||||||
|
* node/memory hotplug, we'll fixup all on-line cpus.
|
||||||
|
*/
|
||||||
|
if (cpu_online(cpu))
|
||||||
|
set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu)));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static noinline void __init
|
||||||
|
build_all_zonelists_init(void)
|
||||||
|
{
|
||||||
|
int cpu;
|
||||||
|
|
||||||
|
__build_all_zonelists(NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize the boot_pagesets that are going to be used
|
* Initialize the boot_pagesets that are going to be used
|
||||||
* for bootstrapping processors. The real pagesets for
|
* for bootstrapping processors. The real pagesets for
|
||||||
|
@ -5175,30 +5200,9 @@ static int __build_all_zonelists(void *data)
|
||||||
* needs the percpu allocator in order to allocate its pagesets
|
* needs the percpu allocator in order to allocate its pagesets
|
||||||
* (a chicken-egg dilemma).
|
* (a chicken-egg dilemma).
|
||||||
*/
|
*/
|
||||||
for_each_possible_cpu(cpu) {
|
for_each_possible_cpu(cpu)
|
||||||
setup_pageset(&per_cpu(boot_pageset, cpu), 0);
|
setup_pageset(&per_cpu(boot_pageset, cpu), 0);
|
||||||
|
|
||||||
#ifdef CONFIG_HAVE_MEMORYLESS_NODES
|
|
||||||
/*
|
|
||||||
* We now know the "local memory node" for each node--
|
|
||||||
* i.e., the node of the first zone in the generic zonelist.
|
|
||||||
* Set up numa_mem percpu variable for on-line cpus. During
|
|
||||||
* boot, only the boot cpu should be on-line; we'll init the
|
|
||||||
* secondary cpus' numa_mem as they come on-line. During
|
|
||||||
* node/memory hotplug, we'll fixup all on-line cpus.
|
|
||||||
*/
|
|
||||||
if (cpu_online(cpu))
|
|
||||||
set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu)));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static noinline void __init
|
|
||||||
build_all_zonelists_init(void)
|
|
||||||
{
|
|
||||||
__build_all_zonelists(NULL);
|
|
||||||
mminit_verify_zonelist();
|
mminit_verify_zonelist();
|
||||||
cpuset_init_current_mems_allowed();
|
cpuset_init_current_mems_allowed();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue