|
@@ -238,6 +238,15 @@ void __init setup_per_cpu_areas(void)
|
|
|
#ifdef CONFIG_NUMA
|
|
|
per_cpu(x86_cpu_to_node_map, cpu) =
|
|
|
early_per_cpu_map(x86_cpu_to_node_map, cpu);
|
|
|
+ /*
|
|
|
+ * Ensure taht the boot cpu numa_node is correct when the boot
|
|
|
+ * cpu is on a node that doesn't have memory installed.
|
|
|
+ * Also cpu_up() will call cpu_to_node() for APs when
|
|
|
+ * MEMORY_HOTPLUG is defined, before per_cpu(numa_node) is set
|
|
|
+ * up later with c_init aka intel_init/amd_init.
|
|
|
+ * So set them all (boot cpu and all APs).
|
|
|
+ */
|
|
|
+ set_cpu_numa_node(cpu, early_cpu_to_node(cpu));
|
|
|
#endif
|
|
|
#endif
|
|
|
/*
|
|
@@ -257,14 +266,6 @@ void __init setup_per_cpu_areas(void)
|
|
|
early_per_cpu_ptr(x86_cpu_to_node_map) = NULL;
|
|
|
#endif
|
|
|
|
|
|
-#if defined(CONFIG_X86_64) && defined(CONFIG_NUMA)
|
|
|
- /*
|
|
|
- * make sure boot cpu numa_node is right, when boot cpu is on the
|
|
|
- * node that doesn't have mem installed
|
|
|
- */
|
|
|
- set_cpu_numa_node(boot_cpu_id, early_cpu_to_node(boot_cpu_id));
|
|
|
-#endif
|
|
|
-
|
|
|
/* Setup node to cpumask map */
|
|
|
setup_node_to_cpumask_map();
|
|
|
|