diff options
author | Anton Blanchard <anton@samba.org> | 2010-05-16 20:22:31 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-07-09 11:28:35 +1000 |
commit | 41eab6f88f24124df89e38067b3766b7bef06ddb (patch) | |
tree | 41ec35970c76adbba1558b6243d80be669062136 /arch/powerpc/include/asm/topology.h | |
parent | a591f6b56d6fbd7d1951e352fe5b0acf6b91e497 (diff) | |
download | talos-op-linux-41eab6f88f24124df89e38067b3766b7bef06ddb.tar.gz talos-op-linux-41eab6f88f24124df89e38067b3766b7bef06ddb.zip |
powerpc/numa: Use form 1 affinity to setup node distance
Form 1 affinity allows multiple entries in ibm,associativity-reference-points
which represent affinity domains in decreasing order of importance. The
Linux concept of a node is always the first entry, but using the other
values as an input to node_distance() allows the memory allocator to make
better decisions on which node to go first when local memory has been
exhausted.
We keep things simple and create an array indexed by NUMA node, capped at
4 entries. Each time we lookup an associativity property we initialise
the array which is overkill, but since we should only hit this path during
boot it didn't seem worth adding a per node valid bit.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/include/asm/topology.h')
-rw-r--r-- | arch/powerpc/include/asm/topology.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h index 32adf7280720..3033c1b30745 100644 --- a/arch/powerpc/include/asm/topology.h +++ b/arch/powerpc/include/asm/topology.h @@ -87,6 +87,9 @@ static inline int pcibus_to_node(struct pci_bus *bus) .balance_interval = 1, \ } +extern int __node_distance(int, int); +#define node_distance(a, b) __node_distance(a, b) + extern void __init dump_numa_cpu_topology(void); extern int sysfs_add_device_to_node(struct sys_device *dev, int nid); |