diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-03-19 13:25:23 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-17 11:41:01 -0400 |
commit | 4fe29a85642544503cf81e9cf251ef0f4e65b162 (patch) | |
tree | 1fe0ed2b1e80e7c638fc12e32806e90ba0272516 /arch/x86/kernel/smpboot_32.c | |
parent | fbac7fcbadc54cc5d374873a2e60e924a056d198 (diff) |
x86: use specialized routine for setup per-cpu area
We use the same routing as x86_64, moved now to setup.c.
Just with a few ifdefs inside.
Note that this routing uses prefill_possible_map().
It has the very nice side effect of allowing hotplugging of
cpus that are marked as present but disabled by acpi bios.
Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/smpboot_32.c')
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index 92a5df6190b5..bf5c9e9f26c1 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -665,6 +665,7 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu) | |||
665 | unmap_cpu_to_logical_apicid(cpu); | 665 | unmap_cpu_to_logical_apicid(cpu); |
666 | cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */ | 666 | cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */ |
667 | cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */ | 667 | cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */ |
668 | cpu_clear(cpu, cpu_possible_map); | ||
668 | cpucount--; | 669 | cpucount--; |
669 | } else { | 670 | } else { |
670 | per_cpu(x86_cpu_to_apicid, cpu) = apicid; | 671 | per_cpu(x86_cpu_to_apicid, cpu) = apicid; |
@@ -743,6 +744,7 @@ EXPORT_SYMBOL(xquad_portio); | |||
743 | 744 | ||
744 | static void __init disable_smp(void) | 745 | static void __init disable_smp(void) |
745 | { | 746 | { |
747 | cpu_possible_map = cpumask_of_cpu(0); | ||
746 | smpboot_clear_io_apic_irqs(); | 748 | smpboot_clear_io_apic_irqs(); |
747 | phys_cpu_present_map = physid_mask_of_physid(0); | 749 | phys_cpu_present_map = physid_mask_of_physid(0); |
748 | map_cpu_to_logical_apicid(); | 750 | map_cpu_to_logical_apicid(); |