x86: do tests before do_boot_cpu in i386
Do tests before do_boot_cpu in native_cpu_up for i386. Tests are a little bit broader than originally, and are the same as x86_64. Test for smp_callin is not applicable right now and is deferred. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
b675f11127
commit
f915d7f46b
|
@ -711,10 +711,6 @@ static int __cpuinit __smp_prepare_cpu(int cpu)
|
||||||
int apicid, ret;
|
int apicid, ret;
|
||||||
|
|
||||||
apicid = per_cpu(x86_cpu_to_apicid, cpu);
|
apicid = per_cpu(x86_cpu_to_apicid, cpu);
|
||||||
if (apicid == BAD_APICID) {
|
|
||||||
ret = -ENODEV;
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
info.complete = &done;
|
info.complete = &done;
|
||||||
info.apicid = apicid;
|
info.apicid = apicid;
|
||||||
|
@ -952,10 +948,22 @@ void __init native_smp_prepare_boot_cpu(void)
|
||||||
|
|
||||||
int __cpuinit native_cpu_up(unsigned int cpu)
|
int __cpuinit native_cpu_up(unsigned int cpu)
|
||||||
{
|
{
|
||||||
|
int apicid = cpu_present_to_apicid(cpu);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
WARN_ON(irqs_disabled());
|
||||||
|
|
||||||
|
Dprintk("++++++++++++++++++++=_---CPU UP %u\n", cpu);
|
||||||
|
|
||||||
|
if (apicid == BAD_APICID || apicid == boot_cpu_physical_apicid ||
|
||||||
|
!physid_isset(apicid, phys_cpu_present_map)) {
|
||||||
|
printk(KERN_ERR "%s: bad cpu %d\n", __func__, cpu);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We do warm boot only on cpus that had booted earlier
|
* We do warm boot only on cpus that had booted earlier
|
||||||
* Otherwise cold boot is all handled from smp_boot_cpus().
|
* Otherwise cold boot is all handled from smp_boot_cpus().
|
||||||
|
|
Loading…
Reference in New Issue