|
@@ -5141,7 +5141,7 @@ DEFINE_MUTEX(zonelists_mutex);
|
|
|
static int __build_all_zonelists(void *data)
|
|
|
{
|
|
|
int nid;
|
|
|
- int cpu;
|
|
|
+ int __maybe_unused cpu;
|
|
|
pg_data_t *self = data;
|
|
|
|
|
|
#ifdef CONFIG_NUMA
|
|
@@ -5162,23 +5162,8 @@ static int __build_all_zonelists(void *data)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * Initialize the boot_pagesets that are going to be used
|
|
|
- * for bootstrapping processors. The real pagesets for
|
|
|
- * each zone will be allocated later when the per cpu
|
|
|
- * allocator is available.
|
|
|
- *
|
|
|
- * boot_pagesets are used also for bootstrapping offline
|
|
|
- * cpus if the system is already booted because the pagesets
|
|
|
- * are needed to initialize allocators on a specific cpu too.
|
|
|
- * F.e. the percpu allocator needs the page allocator which
|
|
|
- * needs the percpu allocator in order to allocate its pagesets
|
|
|
- * (a chicken-egg dilemma).
|
|
|
- */
|
|
|
- for_each_possible_cpu(cpu) {
|
|
|
- setup_pageset(&per_cpu(boot_pageset, cpu), 0);
|
|
|
-
|
|
|
#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.
|
|
@@ -5189,8 +5174,8 @@ static int __build_all_zonelists(void *data)
|
|
|
*/
|
|
|
if (cpu_online(cpu))
|
|
|
set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu)));
|
|
|
-#endif
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -5198,7 +5183,26 @@ static int __build_all_zonelists(void *data)
|
|
|
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
|
|
|
+ * for bootstrapping processors. The real pagesets for
|
|
|
+ * each zone will be allocated later when the per cpu
|
|
|
+ * allocator is available.
|
|
|
+ *
|
|
|
+ * boot_pagesets are used also for bootstrapping offline
|
|
|
+ * cpus if the system is already booted because the pagesets
|
|
|
+ * are needed to initialize allocators on a specific cpu too.
|
|
|
+ * F.e. the percpu allocator needs the page allocator which
|
|
|
+ * needs the percpu allocator in order to allocate its pagesets
|
|
|
+ * (a chicken-egg dilemma).
|
|
|
+ */
|
|
|
+ for_each_possible_cpu(cpu)
|
|
|
+ setup_pageset(&per_cpu(boot_pageset, cpu), 0);
|
|
|
+
|
|
|
mminit_verify_zonelist();
|
|
|
cpuset_init_current_mems_allowed();
|
|
|
}
|