summaryrefslogtreecommitdiff
path: root/sys/arch/i386
diff options
context:
space:
mode:
authorMike Larkin <mlarkin@cvs.openbsd.org>2014-07-09 11:37:17 +0000
committerMike Larkin <mlarkin@cvs.openbsd.org>2014-07-09 11:37:17 +0000
commit0053cf4ab1127d6994edc86edc446e1655c33a16 (patch)
treeb723970471664a024b1f3c53478da817f5e864b7 /sys/arch/i386
parent7a60749ed5233c0bbfa2014ba2cbd5e8265ee395 (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.c17
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 */