diff options
Diffstat (limited to 'src/cpu/x86/lapic')
-rw-r--r-- | src/cpu/x86/lapic/lapic_cpu_init.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c index 20615e61c8..7c40f6a3c0 100644 --- a/src/cpu/x86/lapic/lapic_cpu_init.c +++ b/src/cpu/x86/lapic/lapic_cpu_init.c @@ -11,6 +11,7 @@ #if CONFIG_SMP == 1 + /* This is a lot more paranoid now, since Linux can NOT handle * being told there is a CPU when none exists. So any errors * will return 0, meaning no CPU. @@ -229,12 +230,16 @@ int start_cpu(device_t cpu) void secondary_cpu_init(void) { atomic_inc(&active_cpus); -#if CONFIG_MAX_CPUS>2 +#if SERIAL_CPU_INIT == 1 + #if CONFIG_MAX_CPUS>2 spin_lock(&start_cpu_lock); + #endif #endif cpu_initialize(); -#if CONFIG_MAX_CPUS>2 +#if SERIAL_CPU_INIT == 1 + #if CONFIG_MAX_CPUS>2 spin_unlock(&start_cpu_lock); + #endif #endif atomic_dec(&active_cpus); stop_this_cpu(); @@ -260,8 +265,10 @@ static void initialize_other_cpus(struct bus *cpu_bus) printk_err("CPU %u would not start!\n", cpu->path.u.apic.apic_id); } -#if CONFIG_MAX_CPUS>2 +#if SERIAL_CPU_INIT == 1 + #if CONFIG_MAX_CPUS>2 udelay(10); + #endif #endif } |