diff --git a/src/arch/x86/cpu.c b/src/arch/x86/cpu.c index cfcfdbd5d2..142f2b1400 100644 --- a/src/arch/x86/cpu.c +++ b/src/arch/x86/cpu.c @@ -309,6 +309,5 @@ void arch_bootstate_coreboot_exit(void) return; /* APs are waiting for work. Last thing to do is park them. */ - if (mp_park_aps()) - printk(BIOS_ERR, "Parking APs failed.\n"); + mp_park_aps(); } diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c index 409caa5a83..f99abaf245 100644 --- a/src/cpu/x86/mp_init.c +++ b/src/cpu/x86/mp_init.c @@ -962,7 +962,24 @@ int mp_run_on_all_cpus(void (*func)(void), long expire_us) int mp_park_aps(void) { - return mp_run_on_aps(park_this_cpu, 10 * USECS_PER_MSEC); + struct stopwatch sw; + int ret; + long duration_msecs; + + stopwatch_init(&sw); + + ret = mp_run_on_aps(park_this_cpu, 250 * USECS_PER_MSEC); + + duration_msecs = stopwatch_duration_msecs(&sw); + + if (!ret) + printk(BIOS_DEBUG, "%s done after %ld msecs.\n", __func__, + duration_msecs); + else + printk(BIOS_ERR, "%s failed after %ld msecs.\n", __func__, + duration_msecs); + + return ret; } static struct mp_flight_record mp_steps[] = {