diff options
author | Mike Larkin <mlarkin@cvs.openbsd.org> | 2014-07-09 11:37:17 +0000 |
---|---|---|
committer | Mike Larkin <mlarkin@cvs.openbsd.org> | 2014-07-09 11:37:17 +0000 |
commit | 0053cf4ab1127d6994edc86edc446e1655c33a16 (patch) | |
tree | b723970471664a024b1f3c53478da817f5e864b7 /sys/arch/i386 | |
parent | 7a60749ed5233c0bbfa2014ba2cbd5e8265ee395 (diff) |
Fixes a hibernate issue wherein we locked the kernel lock while hatching
but then parked ourselves in real mode without completing acquisition of
said lock. Also removes the park routine from i386 since we don't need it
(the APs are already parked at the time we start unpack).
discussed with and ok kettenis@, also ok deraadt@
Diffstat (limited to 'sys/arch/i386')
-rw-r--r-- | sys/arch/i386/i386/hibernate_machdep.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/sys/arch/i386/i386/hibernate_machdep.c b/sys/arch/i386/i386/hibernate_machdep.c index 932f7b89417..d14cb76d5af 100644 --- a/sys/arch/i386/i386/hibernate_machdep.c +++ b/sys/arch/i386/i386/hibernate_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: hibernate_machdep.c,v 1.31 2014/06/11 00:30:25 mlarkin Exp $ */ +/* $OpenBSD: hibernate_machdep.c,v 1.32 2014/07/09 11:37:16 mlarkin Exp $ */ /* * Copyright (c) 2011 Mike Larkin <mlarkin@openbsd.org> @@ -297,20 +297,13 @@ hibernate_disable_intr_machdep(void) #ifdef MULTIPROCESSOR /* - * Quiesce CPUs in a multiprocessor machine before resuming. We need to do - * this since the APs will be hatched (but waiting for CPUF_GO), and we don't - * want the APs to be executing code and causing side effects during the - * unpack operation. + * On i386, the APs have not been hatched at the time hibernate resume is + * called, so there is no need to quiesce them. We do want to make sure + * however that we are on the BSP. */ void hibernate_quiesce_cpus(void) { - KASSERT(CPU_IS_PRIMARY(curcpu())); - - /* Start the hatched (but idling) APs */ - cpu_boot_secondary_processors(); - - /* Now shut them down */ - acpi_sleep_mp(); + KASSERT(CPU_IS_PRIMARY(curcpu())); } #endif /* MULTIPROCESSOR */ |