From 7ce8c54e2ba89059d28790550a8f74907b54b916 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Fri, 2 Dec 2005 21:52:30 +0000 Subject: 1201_ht_bus0_dev0_fidvid_core.diff https://openbios.org/roundup/linuxbios/issue41 Lord have mercy upon us. git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2118 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/cpu/x86/lapic/lapic_cpu_init.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/cpu/x86/lapic/lapic_cpu_init.c') diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c index 7f348790e5..4e7e696c47 100644 --- a/src/cpu/x86/lapic/lapic_cpu_init.c +++ b/src/cpu/x86/lapic/lapic_cpu_init.c @@ -227,24 +227,19 @@ int start_cpu(device_t cpu) } /* C entry point of secondary cpus */ - -// secondary_cpu_lock is used to serialize initialization of secondary CPUs -// This can be used to avoid interleaved debugging messages. - -static spinlock_t secondary_cpu_lock = SPIN_LOCK_UNLOCKED; - void secondary_cpu_init(void) { atomic_inc(&active_cpus); - #if SERIAL_CPU_INIT == 1 - spin_lock(&secondary_cpu_lock); + #if CONFIG_MAX_CPUS>2 + spin_lock(&start_cpu_lock); + #endif #endif - cpu_initialize(); - #if SERIAL_CPU_INIT == 1 - spin_unlock(&secondary_cpu_lock); + #if CONFIG_MAX_CPUS>2 + spin_unlock(&start_cpu_lock); + #endif #endif atomic_dec(&active_cpus); @@ -260,12 +255,15 @@ static void initialize_other_cpus(struct bus *cpu_bus) if (cpu->path.type != DEVICE_PATH_APIC) { continue; } + if (!cpu->enabled) { continue; } + if (cpu->initialized) { continue; } + if (!start_cpu(cpu)) { /* Record the error in cpu? */ printk_err("CPU %u would not start!\n", -- cgit v1.2.3