diff options
author | Yinghai Lu <yinghailu@gmail.com> | 2005-01-03 20:54:43 +0000 |
---|---|---|
committer | Yinghai Lu <yinghailu@gmail.com> | 2005-01-03 20:54:43 +0000 |
commit | a335402bec6511c11ab54c943287e7be7fb1672d (patch) | |
tree | 6fd71c2db3846a60a027cb724c802e44b2d484c8 /src | |
parent | e089f00ad494ffbb91f605b09b59375ff4eb30b3 (diff) |
serialize cpus for >2
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1837 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/x86/lapic/lapic_cpu_init.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c index b477d1f0cc..20615e61c8 100644 --- a/src/cpu/x86/lapic/lapic_cpu_init.c +++ b/src/cpu/x86/lapic/lapic_cpu_init.c @@ -229,7 +229,13 @@ int start_cpu(device_t cpu) void secondary_cpu_init(void) { atomic_inc(&active_cpus); +#if CONFIG_MAX_CPUS>2 + spin_lock(&start_cpu_lock); +#endif cpu_initialize(); +#if CONFIG_MAX_CPUS>2 + spin_unlock(&start_cpu_lock); +#endif atomic_dec(&active_cpus); stop_this_cpu(); } @@ -254,6 +260,9 @@ 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 + udelay(10); +#endif } /* Now loop until the other cpus have finished initializing */ |