aboutsummaryrefslogtreecommitdiff
path: root/arch/ia64/mm/numa.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-27 17:46:47 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-27 17:46:47 -0700
commit9dda696f0de87a2e5cfabb147e28c76b7d3c6846 (patch)
tree862a9fa39ce2d33156b815e1f7352038287579bf /arch/ia64/mm/numa.c
parentc5617b200ac52e35f7e8cf05a17b0a2d50f6b3e9 (diff)
parent4ec37de89d8c758ee8115e0e64b3f994910789ee (diff)
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] Fix build breakage
Diffstat (limited to 'arch/ia64/mm/numa.c')
-rw-r--r--arch/ia64/mm/numa.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/ia64/mm/numa.c b/arch/ia64/mm/numa.c
index 3efea7d0a35..2437718bd6b 100644
--- a/arch/ia64/mm/numa.c
+++ b/arch/ia64/mm/numa.c
@@ -17,6 +17,7 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/module.h>
+#include <linux/random.h>
#include <asm/mmzone.h>
#include <asm/numa.h>
@@ -50,6 +51,22 @@ paddr_to_nid(unsigned long paddr)
return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0);
}
+/*
+ * Return the bit number of a random bit set in the nodemask.
+ * (returns -1 if nodemask is empty)
+ */
+int __node_random(const nodemask_t *maskp)
+{
+ int w, bit = -1;
+
+ w = nodes_weight(*maskp);
+ if (w)
+ bit = bitmap_ord_to_pos(maskp->bits,
+ get_random_int() % w, MAX_NUMNODES);
+ return bit;
+}
+EXPORT_SYMBOL(__node_random);
+
#if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA)
/*
* Because of holes evaluate on section limits.