|
@@ -70,19 +70,32 @@ EXPORT_SYMBOL(cpumask_of_node);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
-static void map_cpu_to_node(unsigned int cpu, int nid)
|
|
|
+static void numa_update_cpu(unsigned int cpu, bool remove)
|
|
|
{
|
|
|
- set_cpu_numa_node(cpu, nid);
|
|
|
- if (nid >= 0)
|
|
|
+ int nid = cpu_to_node(cpu);
|
|
|
+
|
|
|
+ if (nid == NUMA_NO_NODE)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (remove)
|
|
|
+ cpumask_clear_cpu(cpu, node_to_cpumask_map[nid]);
|
|
|
+ else
|
|
|
cpumask_set_cpu(cpu, node_to_cpumask_map[nid]);
|
|
|
}
|
|
|
|
|
|
-void numa_clear_node(unsigned int cpu)
|
|
|
+void numa_add_cpu(unsigned int cpu)
|
|
|
{
|
|
|
- int nid = cpu_to_node(cpu);
|
|
|
+ numa_update_cpu(cpu, false);
|
|
|
+}
|
|
|
|
|
|
- if (nid >= 0)
|
|
|
- cpumask_clear_cpu(cpu, node_to_cpumask_map[nid]);
|
|
|
+void numa_remove_cpu(unsigned int cpu)
|
|
|
+{
|
|
|
+ numa_update_cpu(cpu, true);
|
|
|
+}
|
|
|
+
|
|
|
+void numa_clear_node(unsigned int cpu)
|
|
|
+{
|
|
|
+ numa_remove_cpu(cpu);
|
|
|
set_cpu_numa_node(cpu, NUMA_NO_NODE);
|
|
|
}
|
|
|
|
|
@@ -116,7 +129,7 @@ static void __init setup_node_to_cpumask_map(void)
|
|
|
*/
|
|
|
void numa_store_cpu_info(unsigned int cpu)
|
|
|
{
|
|
|
- map_cpu_to_node(cpu, cpu_to_node_map[cpu]);
|
|
|
+ set_cpu_numa_node(cpu, cpu_to_node_map[cpu]);
|
|
|
}
|
|
|
|
|
|
void __init early_map_cpu_to_node(unsigned int cpu, int nid)
|