diff options
Diffstat (limited to 'arch/x86/kernel/topology.c')
-rw-r--r-- | arch/x86/kernel/topology.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/arch/x86/kernel/topology.c b/arch/x86/kernel/topology.c index 7e16d675eb85..78cbb655aa79 100644 --- a/arch/x86/kernel/topology.c +++ b/arch/x86/kernel/topology.c | |||
@@ -31,9 +31,10 @@ | |||
31 | #include <linux/mmzone.h> | 31 | #include <linux/mmzone.h> |
32 | #include <asm/cpu.h> | 32 | #include <asm/cpu.h> |
33 | 33 | ||
34 | static struct i386_cpu cpu_devices[NR_CPUS]; | 34 | static DEFINE_PER_CPU(struct x86_cpu, cpu_devices); |
35 | 35 | ||
36 | int __cpuinit arch_register_cpu(int num) | 36 | #ifdef CONFIG_HOTPLUG_CPU |
37 | int arch_register_cpu(int num) | ||
37 | { | 38 | { |
38 | /* | 39 | /* |
39 | * CPU0 cannot be offlined due to several | 40 | * CPU0 cannot be offlined due to several |
@@ -44,21 +45,23 @@ int __cpuinit arch_register_cpu(int num) | |||
44 | * Also certain PCI quirks require not to enable hotplug control | 45 | * Also certain PCI quirks require not to enable hotplug control |
45 | * for all CPU's. | 46 | * for all CPU's. |
46 | */ | 47 | */ |
47 | #ifdef CONFIG_HOTPLUG_CPU | ||
48 | if (num) | 48 | if (num) |
49 | cpu_devices[num].cpu.hotpluggable = 1; | 49 | per_cpu(cpu_devices, num).cpu.hotpluggable = 1; |
50 | #endif | 50 | return register_cpu(&per_cpu(cpu_devices, num).cpu, num); |
51 | |||
52 | return register_cpu(&cpu_devices[num].cpu, num); | ||
53 | } | 51 | } |
52 | EXPORT_SYMBOL(arch_register_cpu); | ||
54 | 53 | ||
55 | #ifdef CONFIG_HOTPLUG_CPU | ||
56 | void arch_unregister_cpu(int num) | 54 | void arch_unregister_cpu(int num) |
57 | { | 55 | { |
58 | return unregister_cpu(&cpu_devices[num].cpu); | 56 | return unregister_cpu(&per_cpu(cpu_devices, num).cpu); |
59 | } | 57 | } |
60 | EXPORT_SYMBOL(arch_register_cpu); | ||
61 | EXPORT_SYMBOL(arch_unregister_cpu); | 58 | EXPORT_SYMBOL(arch_unregister_cpu); |
59 | #else | ||
60 | int arch_register_cpu(int num) | ||
61 | { | ||
62 | return register_cpu(&per_cpu(cpu_devices, num).cpu, num); | ||
63 | } | ||
64 | EXPORT_SYMBOL(arch_register_cpu); | ||
62 | #endif /*CONFIG_HOTPLUG_CPU*/ | 65 | #endif /*CONFIG_HOTPLUG_CPU*/ |
63 | 66 | ||
64 | static int __init topology_init(void) | 67 | static int __init topology_init(void) |