aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/mm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/mm')
-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 @@
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 */
58int __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}
68EXPORT_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.