aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/smpboot_32.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c
index 8144aa3a1edf..147af81f70ea 100644
--- a/arch/x86/kernel/smpboot_32.c
+++ b/arch/x86/kernel/smpboot_32.c
@@ -711,10 +711,6 @@ static int __cpuinit __smp_prepare_cpu(int cpu)
711 int apicid, ret; 711 int apicid, ret;
712 712
713 apicid = per_cpu(x86_cpu_to_apicid, cpu); 713 apicid = per_cpu(x86_cpu_to_apicid, cpu);
714 if (apicid == BAD_APICID) {
715 ret = -ENODEV;
716 goto exit;
717 }
718 714
719 info.complete = &done; 715 info.complete = &done;
720 info.apicid = apicid; 716 info.apicid = apicid;
@@ -952,10 +948,22 @@ void __init native_smp_prepare_boot_cpu(void)
952 948
953int __cpuinit native_cpu_up(unsigned int cpu) 949int __cpuinit native_cpu_up(unsigned int cpu)
954{ 950{
951 int apicid = cpu_present_to_apicid(cpu);
955 unsigned long flags; 952 unsigned long flags;
956#ifdef CONFIG_HOTPLUG_CPU
957 int ret = 0; 953 int ret = 0;
958 954
955 WARN_ON(irqs_disabled());
956
957 Dprintk("++++++++++++++++++++=_---CPU UP %u\n", cpu);
958
959 if (apicid == BAD_APICID || apicid == boot_cpu_physical_apicid ||
960 !physid_isset(apicid, phys_cpu_present_map)) {
961 printk(KERN_ERR "%s: bad cpu %d\n", __func__, cpu);
962 return -EINVAL;
963 }
964
965#ifdef CONFIG_HOTPLUG_CPU
966
959 /* 967 /*
960 * We do warm boot only on cpus that had booted earlier 968 * We do warm boot only on cpus that had booted earlier
961 * Otherwise cold boot is all handled from smp_boot_cpus(). 969 * Otherwise cold boot is all handled from smp_boot_cpus().