cpumask: use setup_nr_cpu_ids() instead of direct assignment.

nr_cpu_ids is going to become a constant under some configs, so don't
assign it.  Currently only x86 seems to anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
 arch/x86/kernel/smpboot.c |    4 ++--
 include/linux/cpumask.h   |    4 ++++
 init/main.c               |    4 ++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff -r 743139becb95 arch/x86/kernel/smpboot.c
--- a/arch/x86/kernel/smpboot.c	Sun Sep 28 14:47:57 2008 +1000
+++ b/arch/x86/kernel/smpboot.c	Sun Sep 28 15:34:34 2008 +1000
@@ -1079,7 +1079,7 @@ static int __init smp_sanity_check(unsig
 			nr++;
 		}
 
-		nr_cpu_ids = 8;
+		setup_nr_cpu_ids();
 	}
 #endif
 
@@ -1333,7 +1333,7 @@ __init void prefill_possible_map(void)
 	for (i = 0; i < possible; i++)
 		cpu_set(i, cpu_possible_map);
 
-	nr_cpu_ids = possible;
+	setup_nr_cpu_ids();
 }
 
 static void __ref remove_cpu_from_maps(int cpu)
diff -r 743139becb95 include/linux/cpumask.h
--- a/include/linux/cpumask.h	Sun Sep 28 14:47:57 2008 +1000
+++ b/include/linux/cpumask.h	Sun Sep 28 15:34:34 2008 +1000
@@ -142,6 +142,7 @@
 #include <linux/kernel.h>
 #include <linux/threads.h>
 #include <linux/bitmap.h>
+#include <linux/init.h>
 
 struct cpumask
 {
@@ -592,4 +593,7 @@ extern cpumask_t cpu_active_map;
 #define for_each_online_cpu(cpu)   for_each_cpu_mask_nr((cpu), cpu_online_map)
 #define for_each_present_cpu(cpu)  for_each_cpu_mask_nr((cpu), cpu_present_map)
 
+/* Arch-specific code may call this to initialize nr_cpu_ids based on
+ * the cpu_possible_map. */
+void __init setup_nr_cpu_ids(void);
 #endif /* __LINUX_CPUMASK_H */
diff -r 743139becb95 init/main.c
--- a/init/main.c	Sun Sep 28 14:47:57 2008 +1000
+++ b/init/main.c	Sun Sep 28 15:34:34 2008 +1000
@@ -359,7 +359,7 @@ static void __init smp_init(void)
 #endif
 
 static inline void setup_per_cpu_areas(void) { }
-static inline void setup_nr_cpu_ids(void) { }
+void __init setup_nr_cpu_ids(void) { }
 static inline void smp_prepare_cpus(unsigned int maxcpus) { }
 
 #else
@@ -374,7 +374,7 @@ EXPORT_SYMBOL(nr_cpu_ids);
 EXPORT_SYMBOL(nr_cpu_ids);
 
 /* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */
-static void __init setup_nr_cpu_ids(void)
+void __init setup_nr_cpu_ids(void)
 {
 	int cpu, highest_cpu = 0;
 
