]> err.no Git - linux-2.6/blobdiff - arch/x86/kernel/topology.c
Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6
[linux-2.6] / arch / x86 / kernel / topology.c
index c25f23eb397cceebe5e73afc62191815fce53455..e6757aaa202bda9c7dfc1992d3e148fa55541f45 100644 (file)
@@ -31,8 +31,9 @@
 #include <linux/mmzone.h>
 #include <asm/cpu.h>
 
-static struct i386_cpu cpu_devices[NR_CPUS];
+static DEFINE_PER_CPU(struct x86_cpu, cpu_devices);
 
+#ifdef CONFIG_HOTPLUG_CPU
 int arch_register_cpu(int num)
 {
        /*
@@ -44,20 +45,22 @@ int arch_register_cpu(int num)
         * Also certain PCI quirks require not to enable hotplug control
         * for all CPU's.
         */
-       if (num && enable_cpu_hotplug)
-               cpu_devices[num].cpu.hotpluggable = 1;
-
-       return register_cpu(&cpu_devices[num].cpu, num);
+       if (num)
+               per_cpu(cpu_devices, num).cpu.hotpluggable = 1;
+       return register_cpu(&per_cpu(cpu_devices, num).cpu, num);
 }
+EXPORT_SYMBOL(arch_register_cpu);
 
-#ifdef CONFIG_HOTPLUG_CPU
-int enable_cpu_hotplug = 1;
-
-void arch_unregister_cpu(int num) {
-       return unregister_cpu(&cpu_devices[num].cpu);
+void arch_unregister_cpu(int num)
+{
+       return unregister_cpu(&per_cpu(cpu_devices, num).cpu);
 }
-EXPORT_SYMBOL(arch_register_cpu);
 EXPORT_SYMBOL(arch_unregister_cpu);
+#else
+static int __init arch_register_cpu(int num)
+{
+       return register_cpu(&per_cpu(cpu_devices, num).cpu, num);
+}
 #endif /*CONFIG_HOTPLUG_CPU*/
 
 static int __init topology_init(void)