|
@@ -722,22 +722,19 @@ void __init x86_numa_init(void)
|
|
|
numa_init(dummy_numa_init);
|
|
|
}
|
|
|
|
|
|
-static __init int find_near_online_node(int node)
|
|
|
+static void __init init_memory_less_node(int nid)
|
|
|
{
|
|
|
- int n, val;
|
|
|
- int min_val = INT_MAX;
|
|
|
- int best_node = -1;
|
|
|
+ unsigned long zones_size[MAX_NR_ZONES] = {0};
|
|
|
+ unsigned long zholes_size[MAX_NR_ZONES] = {0};
|
|
|
|
|
|
- for_each_online_node(n) {
|
|
|
- val = node_distance(node, n);
|
|
|
+ /* Allocate and initialize node data. Memory-less node is now online.*/
|
|
|
+ alloc_node_data(nid);
|
|
|
+ free_area_init_node(nid, zones_size, 0, zholes_size);
|
|
|
|
|
|
- if (val < min_val) {
|
|
|
- min_val = val;
|
|
|
- best_node = n;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return best_node;
|
|
|
+ /*
|
|
|
+ * All zonelists will be built later in start_kernel() after per cpu
|
|
|
+ * areas are initialized.
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -766,8 +763,10 @@ void __init init_cpu_to_node(void)
|
|
|
|
|
|
if (node == NUMA_NO_NODE)
|
|
|
continue;
|
|
|
+
|
|
|
if (!node_online(node))
|
|
|
- node = find_near_online_node(node);
|
|
|
+ init_memory_less_node(node);
|
|
|
+
|
|
|
numa_set_node(cpu, node);
|
|
|
}
|
|
|
}
|