diff options
author | Tony Luck <tony.luck@intel.com> | 2010-05-27 18:35:13 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2010-05-27 18:35:13 -0400 |
commit | 4ec37de89d8c758ee8115e0e64b3f994910789ee (patch) | |
tree | 3c45c8f93054699a5245031919da7776b243ebf1 /arch/ia64/mm | |
parent | cc106eb35ed4abea675bce0d8fe40a46ff0b4a72 (diff) |
[IA64] Fix build breakage
In commit 0ac0c0d0f837c499afd02a802f9cf52d3027fa3b
cpusets: randomize node rotor used in cpuset_mem_spread_node()
Jack Steiner fixed a problem with too many small tasks being
assigned to node 0. Copy his code to ia64 to avoid build error.
arch/ia64/kernel/smpboot.c:641: error: ‘cpu_to_node_map’ undeclared (first use in this function)
In commit 3bccd996276b108c138e8176793a26ecef54d573
numa: ia64: use generic percpu var numa_node_id() implementation
Lee Schermerhorn added some set_numa_node() calls - but these
only work on CONFIG_NUMA=y configurations. Surround the calls
with #ifdef CONFIG_NUMA
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/mm')
-rw-r--r-- | arch/ia64/mm/numa.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/ia64/mm/numa.c b/arch/ia64/mm/numa.c index 3efea7d0a351..2437718bd6b1 100644 --- a/arch/ia64/mm/numa.c +++ b/arch/ia64/mm/numa.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/bootmem.h> | 18 | #include <linux/bootmem.h> |
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/random.h> | ||
20 | #include <asm/mmzone.h> | 21 | #include <asm/mmzone.h> |
21 | #include <asm/numa.h> | 22 | #include <asm/numa.h> |
22 | 23 | ||
@@ -50,6 +51,22 @@ paddr_to_nid(unsigned long paddr) | |||
50 | return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0); | 51 | return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0); |
51 | } | 52 | } |
52 | 53 | ||
54 | /* | ||
55 | * Return the bit number of a random bit set in the nodemask. | ||
56 | * (returns -1 if nodemask is empty) | ||
57 | */ | ||
58 | int __node_random(const nodemask_t *maskp) | ||
59 | { | ||
60 | int w, bit = -1; | ||
61 | |||
62 | w = nodes_weight(*maskp); | ||
63 | if (w) | ||
64 | bit = bitmap_ord_to_pos(maskp->bits, | ||
65 | get_random_int() % w, MAX_NUMNODES); | ||
66 | return bit; | ||
67 | } | ||
68 | EXPORT_SYMBOL(__node_random); | ||
69 | |||
53 | #if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA) | 70 | #if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA) |
54 | /* | 71 | /* |
55 | * Because of holes evaluate on section limits. | 72 | * Because of holes evaluate on section limits. |