aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-27 20:46:47 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-27 20:46:47 -0400
commit9dda696f0de87a2e5cfabb147e28c76b7d3c6846 (patch)
tree862a9fa39ce2d33156b815e1f7352038287579bf /arch
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')
-rw-r--r--arch/ia64/kernel/smpboot.c4
-rw-r--r--arch/ia64/mm/numa.c17
2 files changed, 21 insertions, 0 deletions
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index 518e876a410d..6a1380e90f87 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -390,11 +390,13 @@ smp_callin (void)
390 390
391 fix_b0_for_bsp(); 391 fix_b0_for_bsp();
392 392
393#ifdef CONFIG_NUMA
393 /* 394 /*
394 * numa_node_id() works after this. 395 * numa_node_id() works after this.
395 */ 396 */
396 set_numa_node(cpu_to_node_map[cpuid]); 397 set_numa_node(cpu_to_node_map[cpuid]);
397 set_numa_mem(local_memory_node(cpu_to_node_map[cpuid])); 398 set_numa_mem(local_memory_node(cpu_to_node_map[cpuid]));
399#endif
398 400
399 ipi_call_lock_irq(); 401 ipi_call_lock_irq();
400 spin_lock(&vector_lock); 402 spin_lock(&vector_lock);
@@ -638,7 +640,9 @@ void __devinit smp_prepare_boot_cpu(void)
638{ 640{
639 cpu_set(smp_processor_id(), cpu_online_map); 641 cpu_set(smp_processor_id(), cpu_online_map);
640 cpu_set(smp_processor_id(), cpu_callin_map); 642 cpu_set(smp_processor_id(), cpu_callin_map);
643#ifdef CONFIG_NUMA
641 set_numa_node(cpu_to_node_map[smp_processor_id()]); 644 set_numa_node(cpu_to_node_map[smp_processor_id()]);
645#endif
642 per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; 646 per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
643 paravirt_post_smp_prepare_boot_cpu(); 647 paravirt_post_smp_prepare_boot_cpu();
644} 648}
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 */
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.