Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 88840
b: refs/heads/master
c: b9f9294
h: refs/heads/master
v: v3
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Apr 17, 2008
1 parent 0a6ae36 commit 2920405
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 071782692798d7a6e0a5679f3186ea7fea49fd62
refs/heads/master: b9f9294a86fd274e4055891450033e8bc9d68f66
20 changes: 13 additions & 7 deletions trunk/arch/x86/kernel/smpboot_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -839,6 +839,7 @@ int __cpuinit native_cpu_up(unsigned int cpu)
{
int apicid = cpu_present_to_apicid(cpu);
unsigned long flags;
int err;

WARN_ON(irqs_disabled());

Expand All @@ -850,6 +851,14 @@ int __cpuinit native_cpu_up(unsigned int cpu)
return -EINVAL;
}

/*
* Already booted CPU?
*/
if (cpu_isset(cpu, cpu_callin_map)) {
Dprintk("do_boot_cpu %d Already started\n", cpu);
return -ENOSYS;
}

/*
* Save current MTRR state in case it was changed since early boot
* (e.g. by the ACPI SMI) to initialize new CPUs with MTRRs in sync:
Expand All @@ -863,15 +872,12 @@ int __cpuinit native_cpu_up(unsigned int cpu)
min_t(unsigned long, KERNEL_PGD_PTRS, USER_PGD_PTRS));
flush_tlb_all();

do_boot_cpu(apicid, cpu);

/* In case one didn't come up */
if (!cpu_isset(cpu, cpu_callin_map)) {
printk(KERN_DEBUG "skipping cpu%d, didn't come online\n", cpu);
return -EIO;
err = do_boot_cpu(apicid, cpu);
if (err < 0) {
Dprintk("do_boot_cpu failed %d\n", err);
return err;
}


/*
* Check TSC synchronization with the AP (keep irqs disabled
* while doing so):
Expand Down

0 comments on commit 2920405

Please sign in to comment.