X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fia64%2Fkernel%2Fnuma.c;fp=arch%2Fia64%2Fkernel%2Fnuma.c;h=a68ce667809270e17ccb8c44f1f1aa4975501bbb;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=20340631179f669fd7d9216d85f210c2a4cf381e;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/ia64/kernel/numa.c b/arch/ia64/kernel/numa.c index 203406311..a68ce6678 100644 --- a/arch/ia64/kernel/numa.c +++ b/arch/ia64/kernel/numa.c @@ -19,46 +19,17 @@ * Copyright (C) 2004 Silicon Graphics, Inc. * Jesse Barnes */ +#include #include #include #include #include -u16 cpu_to_node_map[NR_CPUS] __cacheline_aligned; +u8 cpu_to_node_map[NR_CPUS] __cacheline_aligned; EXPORT_SYMBOL(cpu_to_node_map); cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned; -void __cpuinit map_cpu_to_node(int cpu, int nid) -{ - int oldnid; - if (nid < 0) { /* just initialize by zero */ - cpu_to_node_map[cpu] = 0; - return; - } - /* sanity check first */ - oldnid = cpu_to_node_map[cpu]; - if (cpu_isset(cpu, node_to_cpu_mask[oldnid])) { - return; /* nothing to do */ - } - /* we don't have cpu-driven node hot add yet... - In usual case, node is created from SRAT at boot time. */ - if (!node_online(nid)) - nid = first_online_node; - cpu_to_node_map[cpu] = nid; - cpu_set(cpu, node_to_cpu_mask[nid]); - return; -} - -void __cpuinit unmap_cpu_from_node(int cpu, int nid) -{ - WARN_ON(!cpu_isset(cpu, node_to_cpu_mask[nid])); - WARN_ON(cpu_to_node_map[cpu] != nid); - cpu_to_node_map[cpu] = 0; - cpu_clear(cpu, node_to_cpu_mask[nid]); -} - - /** * build_cpu_to_node_map - setup cpu to node and node to cpumask arrays * @@ -79,6 +50,8 @@ void __init build_cpu_to_node_map(void) node = node_cpuid[i].nid; break; } - map_cpu_to_node(cpu, node); + cpu_to_node_map[cpu] = (node >= 0) ? node : 0; + if (node >= 0) + cpu_set(cpu, node_to_cpu_mask[node]); } }