serialize cpus for >2
authorYinghai Lu <yinghailu@gmail.com>
Mon, 3 Jan 2005 20:54:43 +0000 (20:54 +0000)
committerYinghai Lu <yinghailu@gmail.com>
Mon, 3 Jan 2005 20:54:43 +0000 (20:54 +0000)
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1837 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/cpu/x86/lapic/lapic_cpu_init.c

index b477d1f0cc16b1a14ef2b115042446998a646815..20615e61c82eab8cdc0d3b5c0fc9477ed1bd9bb1 100644 (file)
@@ -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 */