Set cold to 1 before executing the DVACT_POWERDOWN handlers when halting or
authormpi <mpi@openbsd.org>
Thu, 10 Jul 2014 21:46:02 +0000 (21:46 +0000)
committermpi <mpi@openbsd.org>
Thu, 10 Jul 2014 21:46:02 +0000 (21:46 +0000)
rebooting a machine, like it is done in the hibernate case.

At least some USB host controller drivers rely on this to busy way instead
of sleeping.  Avoid a panic on macppc with an uhci(4) cardbus plugged in.

ok deraadt@, uebayashi@

20 files changed:
sys/arch/alpha/alpha/machdep.c
sys/arch/amd64/amd64/machdep.c
sys/arch/armish/armish/armish_machdep.c
sys/arch/armv7/armv7/armv7_machdep.c
sys/arch/aviion/aviion/machdep.c
sys/arch/hppa/hppa/machdep.c
sys/arch/hppa64/hppa64/machdep.c
sys/arch/i386/i386/machdep.c
sys/arch/landisk/landisk/machdep.c
sys/arch/loongson/loongson/machdep.c
sys/arch/luna88k/luna88k/machdep.c
sys/arch/macppc/macppc/machdep.c
sys/arch/octeon/octeon/machdep.c
sys/arch/sgi/sgi/machdep.c
sys/arch/socppc/socppc/machdep.c
sys/arch/solbourne/solbourne/machdep.c
sys/arch/sparc/sparc/machdep.c
sys/arch/sparc64/sparc64/machdep.c
sys/arch/vax/vax/machdep.c
sys/arch/zaurus/zaurus/zaurus_machdep.c

index 0f7790a..f4db528 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.159 2014/07/10 20:15:26 uebayasi Exp $ */
+/* $OpenBSD: machdep.c,v 1.160 2014/07/10 21:46:02 mpi Exp $ */
 /* $NetBSD: machdep.c,v 1.210 2000/06/01 17:12:38 thorpej Exp $ */
 
 /*-
@@ -1007,6 +1007,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
 #if defined(MULTIPROCESSOR)
        /*
index a6836c6..3d755d5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.183 2014/07/10 20:15:26 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.184 2014/07/10 21:46:02 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.3 2003/05/07 22:58:18 fvdl Exp $ */
 
 /*-
@@ -776,6 +776,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if (howto & RB_DUMP)
index b446680..fc80ce4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: armish_machdep.c,v 1.27 2014/07/10 20:15:26 uebayasi Exp $ */
+/*     $OpenBSD: armish_machdep.c,v 1.28 2014/07/10 21:46:02 mpi Exp $ */
 /*     $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
 
 /*
@@ -270,9 +270,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-
-       /* Say NO to interrupts */
-       splhigh();
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if ((howto & (RB_DUMP | RB_HALT)) == RB_DUMP)
index 4b09145..67cade6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: armv7_machdep.c,v 1.10 2014/07/10 20:37:41 uebayasi Exp $ */
+/*     $OpenBSD: armv7_machdep.c,v 1.11 2014/07/10 21:46:02 mpi Exp $ */
 /*     $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
 
 /*
@@ -286,9 +286,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-
-       /* Say NO to interrupts */
-       splhigh();
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if ((howto & (RB_DUMP | RB_HALT)) == RB_DUMP)
index 9452d47..7e4a829 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.67 2014/07/10 20:15:26 uebayasi Exp $   */
+/*     $OpenBSD: machdep.c,v 1.68 2014/07/10 21:46:02 mpi Exp $        */
 /*
  * Copyright (c) 2007 Miodrag Vallat.
  *
@@ -318,6 +318,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* If rebooting and a dump is requested, do it. */
        if (howto & RB_DUMP)
index 54b0f51..b38152d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.225 2014/07/10 20:15:26 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.226 2014/07/10 21:46:02 mpi Exp $       */
 
 /*
  * Copyright (c) 1999-2003 Michael Shalayeff
@@ -919,10 +919,9 @@ boot(int howto)
        }
        if_downall();
 
-       /* XXX probably save howto into stable storage */
-
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index b986a4f..b74cc83 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.63 2014/07/10 20:15:27 uebayasi Exp $   */
+/*     $OpenBSD: machdep.c,v 1.64 2014/07/10 21:46:03 mpi Exp $        */
 
 /*
  * Copyright (c) 2005 Michael Shalayeff
@@ -556,10 +556,9 @@ boot(int howto)
        }
        if_downall();
 
-       /* XXX probably save howto into stable storage */
-
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 97c166a..032caa7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.544 2014/07/10 20:15:27 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.545 2014/07/10 21:46:03 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.214 1996/11/10 03:16:17 thorpej Exp $    */
 
 /*-
@@ -2590,6 +2590,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if (howto & RB_DUMP)
index c1df924..7bf1ace 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.35 2014/07/10 13:34:32 uebayasi Exp $   */
+/*     $OpenBSD: machdep.c,v 1.36 2014/07/10 21:46:03 mpi Exp $        */
 /*     $NetBSD: machdep.c,v 1.1 2006/09/01 21:26:18 uwe Exp $  */
 
 /*-
@@ -214,6 +214,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if (howto & RB_DUMP)
index 8be7e03..cd51980 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.52 2014/07/10 20:15:27 uebayasi Exp $ */
+/*     $OpenBSD: machdep.c,v 1.53 2014/07/10 21:46:03 mpi Exp $ */
 
 /*
  * Copyright (c) 2009, 2010, 2014 Miodrag Vallat.
@@ -931,7 +931,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* Extreme priority. */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 3cb1d31..1b0b68e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.104 2014/07/10 20:37:42 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.105 2014/07/10 21:46:03 mpi Exp $       */
 /*
  * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
  * Copyright (c) 1996 Nivas Madhur
@@ -492,6 +492,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();                      /* Disable interrupts. */
+       cold = 1;
 
        /* If rebooting and a dump is requested, do it. */
        if (howto & RB_DUMP)
index d82c9ca..2aa1f42 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.156 2014/07/10 20:15:27 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.157 2014/07/10 21:46:03 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $   */
 
 /*
@@ -827,6 +827,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index a6e1b9c..982a314 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.52 2014/07/10 20:15:27 uebayasi Exp $ */
+/*     $OpenBSD: machdep.c,v 1.53 2014/07/10 21:46:03 mpi Exp $ */
 
 /*
  * Copyright (c) 2009, 2010 Miodrag Vallat.
@@ -695,7 +695,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* Extreme priority. */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 8931455..7eee522 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.143 2014/07/10 20:15:27 uebayasi Exp $ */
+/*     $OpenBSD: machdep.c,v 1.144 2014/07/10 21:46:03 mpi Exp $ */
 
 /*
  * Copyright (c) 2003-2004 Opsycon AB  (www.opsycon.se / www.opsycon.com)
@@ -858,7 +858,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* Extreme priority. */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 8a57eb5..68adb42 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.51 2014/07/10 20:15:27 uebayasi Exp $   */
+/*     $OpenBSD: machdep.c,v 1.52 2014/07/10 21:46:03 mpi Exp $        */
 /*     $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $   */
 
 /*
@@ -1055,6 +1055,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if ((howto & RB_DUMP))
                dumpsys();
index 5fa3e96..0c2a93a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.36 2014/07/10 20:15:27 uebayasi Exp $   */
+/*     $OpenBSD: machdep.c,v 1.37 2014/07/10 21:46:03 mpi Exp $        */
 /*     OpenBSD: machdep.c,v 1.105 2005/04/11 15:13:01 deraadt Exp      */
 
 /*
@@ -546,7 +546,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* ??? */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 4ad110f..8f74a95 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.157 2014/07/10 20:15:27 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.158 2014/07/10 21:46:03 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.85 1997/09/12 08:55:02 pk Exp $ */
 
 /*
@@ -555,7 +555,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* ??? */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 860570d..98f2c85 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.160 2014/07/10 20:15:27 uebayasi Exp $  */
+/*     $OpenBSD: machdep.c,v 1.161 2014/07/10 21:46:03 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.108 2001/07/24 19:30:14 eeh Exp $ */
 
 /*-
@@ -644,7 +644,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* ??? */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* If rebooting and a dump is requested, do it. */
        if (howto & RB_DUMP)
index 69ea1ae..bcff777 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.139 2014/07/10 20:15:27 uebayasi Exp $ */
+/* $OpenBSD: machdep.c,v 1.140 2014/07/10 21:46:03 mpi Exp $ */
 /* $NetBSD: machdep.c,v 1.108 2000/09/13 15:00:23 thorpej Exp $         */
 
 /*
@@ -532,7 +532,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       splhigh();              /* extreme priority */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* If rebooting and a dump is requested, do it. */
        if (howto & RB_DUMP)
index 0e3d2e3..68397a3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: zaurus_machdep.c,v 1.46 2014/07/10 20:15:27 uebayasi Exp $    */
+/*     $OpenBSD: zaurus_machdep.c,v 1.47 2014/07/10 21:46:03 mpi Exp $ */
 /*     $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
 
 /*
@@ -311,8 +311,9 @@ boot(int howto)
        if (!(howto & RB_NOSYNC))
                bootsync(howto);
 
-       /* Say NO to interrupts */
-       splhigh();
+       uvm_shutdown();
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if ((howto & (RB_DUMP | RB_HALT)) == RB_DUMP)