summaryrefslogtreecommitdiff
path: root/sys/arch/macppc
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2011-06-26 22:40:01 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2011-06-26 22:40:01 +0000
commitfaf5f1c428343fb3b63d0d5c8e1f3281e5fb096a (patch)
treef68032641ab88713a1e6a1d4e8db85a94c44fa65 /sys/arch/macppc
parente4406dbd9a603957bda0912007302178f3920008 (diff)
if_downall() cannot be done MI in sys_reboot() because vfs_shutdown()
might need network (ie. nfs). Move the call to the MD boot() routines. This cause for boot hangs diagnosed by kettenis.
Diffstat (limited to 'sys/arch/macppc')
-rw-r--r--sys/arch/macppc/macppc/machdep.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/sys/arch/macppc/macppc/machdep.c b/sys/arch/macppc/macppc/machdep.c
index 2de48354e1f..67fd5839e32 100644
--- a/sys/arch/macppc/macppc/machdep.c
+++ b/sys/arch/macppc/macppc/machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.127 2011/06/05 19:41:07 deraadt Exp $ */
+/* $OpenBSD: machdep.c,v 1.128 2011/06/26 22:40:00 deraadt Exp $ */
/* $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $ */
/*
@@ -33,25 +33,30 @@
*/
#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/signalvar.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/sched.h>
#include <sys/buf.h>
+#include <sys/reboot.h>
+#include <sys/device.h>
+#include <sys/conf.h>
+#include <sys/file.h>
#include <sys/timeout.h>
-#include <sys/exec.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
-#include <sys/mount.h>
#include <sys/msgbuf.h>
-#include <sys/proc.h>
-#include <sys/signalvar.h>
-#include <sys/reboot.h>
-#include <sys/syscallargs.h>
-#include <sys/syslog.h>
-#include <sys/extent.h>
-#include <sys/systm.h>
+#include <sys/ioctl.h>
+#include <sys/tty.h>
#include <sys/user.h>
-#include <sys/conf.h>
+#include <sys/exec.h>
+#include <sys/exec_ecoff.h>
+#include <sys/sysctl.h>
#include <sys/core.h>
#include <sys/kcore.h>
+#include <net/if.h>
#include <uvm/uvm.h>
#include <dev/cons.h>
@@ -854,6 +859,7 @@ boot(int howto)
printf("WARNING: not updating battery clock\n");
}
}
+ if_downall();
uvm_shutdown();
splhigh();