Set cold to 1 before executing the DVACT_POWERDOWN handlers when halting or
authormpi <mpi@openbsd.org>
Fri, 30 May 2014 13:46:16 +0000 (13:46 +0000)
committermpi <mpi@openbsd.org>
Fri, 30 May 2014 13:46:16 +0000 (13: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 f107df4..bc26eca 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.154 2014/05/25 13:57:48 deraadt Exp $ */
+/* $OpenBSD: machdep.c,v 1.155 2014/05/30 13:46:16 mpi Exp $ */
 /* $NetBSD: machdep.c,v 1.210 2000/06/01 17:12:38 thorpej Exp $ */
 
 /*-
@@ -1015,6 +1015,7 @@ boot(howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
 #if defined(MULTIPROCESSOR)
        /*
index fd475cd..947287c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.177 2014/03/29 18:09:28 guenther Exp $  */
+/*     $OpenBSD: machdep.c,v 1.178 2014/05/30 13:46:16 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.3 2003/05/07 22:58:18 fvdl Exp $ */
 
 /*-
@@ -783,6 +783,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if (howto & RB_DUMP)
index 43d94ab..e408d0d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: armish_machdep.c,v 1.23 2014/03/23 18:20:59 miod Exp $ */
+/*     $OpenBSD: armish_machdep.c,v 1.24 2014/05/30 13:46:16 mpi Exp $ */
 /*     $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
 
 /*
@@ -274,9 +274,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 3ac90c7..ff6d657 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: armv7_machdep.c,v 1.6 2014/03/29 18:09:28 guenther Exp $ */
+/*     $OpenBSD: armv7_machdep.c,v 1.7 2014/05/30 13:46:16 mpi Exp $ */
 /*     $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
 
 /*
@@ -290,9 +290,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 2364e66..dd5672b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.62 2014/05/08 22:17:33 miod Exp $       */
+/*     $OpenBSD: machdep.c,v 1.63 2014/05/30 13:46:16 mpi Exp $        */
 /*
  * Copyright (c) 2007 Miodrag Vallat.
  *
@@ -326,6 +326,7 @@ boot(howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* If rebooting and a dump is requested, do it. */
        if (howto & RB_DUMP)
index b4049af..d1888df 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.220 2014/05/08 21:32:45 miod Exp $      */
+/*     $OpenBSD: machdep.c,v 1.221 2014/05/30 13:46:16 mpi Exp $       */
 
 /*
  * Copyright (c) 1999-2003 Michael Shalayeff
@@ -925,10 +925,9 @@ boot(int howto)
        }
        if_downall();
 
-       /* XXX probably save howto into stable storage */
-
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 174df29..10941b7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.58 2014/04/08 09:34:23 mpi Exp $        */
+/*     $OpenBSD: machdep.c,v 1.59 2014/05/30 13:46:16 mpi Exp $        */
 
 /*
  * Copyright (c) 2005 Michael Shalayeff
@@ -562,10 +562,9 @@ boot(int howto)
        }
        if_downall();
 
-       /* XXX probably save howto into stable storage */
-
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index defb7f3..59c5ade 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.536 2014/03/29 18:09:29 guenther Exp $  */
+/*     $OpenBSD: machdep.c,v 1.537 2014/05/30 13:46:16 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.214 1996/11/10 03:16:17 thorpej Exp $    */
 
 /*-
@@ -2597,6 +2597,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if (howto & RB_DUMP)
index 4639ddb..77e4a53 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.31 2014/04/14 07:36:12 mpi Exp $        */
+/*     $OpenBSD: machdep.c,v 1.32 2014/05/30 13:46:16 mpi Exp $        */
 /*     $NetBSD: machdep.c,v 1.1 2006/09/01 21:26:18 uwe Exp $  */
 
 /*-
@@ -217,6 +217,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        /* Do a dump if requested. */
        if (howto & RB_DUMP)
index 79ba923..f461089 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.47 2014/04/03 08:07:16 mpi Exp $ */
+/*     $OpenBSD: machdep.c,v 1.48 2014/05/30 13:46:16 mpi Exp $ */
 
 /*
  * Copyright (c) 2009, 2010, 2014 Miodrag Vallat.
@@ -943,7 +943,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* Extreme priority. */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index a3c8f44..4ecd182 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.98 2014/05/08 22:17:33 miod Exp $       */
+/*     $OpenBSD: machdep.c,v 1.99 2014/05/30 13:46:16 mpi Exp $        */
 /*
  * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
  * Copyright (c) 1996 Nivas Madhur
@@ -500,6 +500,7 @@ boot(howto)
 
        uvm_shutdown();
        splhigh();                      /* Disable interrupts. */
+       cold = 1;
 
        /* If rebooting and a dump is requested, do it. */
        if (howto & RB_DUMP)
index 85bf429..9274726 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.150 2014/05/09 18:16:15 miod Exp $      */
+/*     $OpenBSD: machdep.c,v 1.151 2014/05/30 13:46:16 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $   */
 
 /*
@@ -835,6 +835,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 99a4f4a..94d7845 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.46 2014/05/10 22:37:12 jasper Exp $ */
+/*     $OpenBSD: machdep.c,v 1.47 2014/05/30 13:46:16 mpi Exp $ */
 
 /*
  * Copyright (c) 2009, 2010 Miodrag Vallat.
@@ -687,7 +687,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* Extreme priority. */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index 96ee706..5747848 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.138 2014/05/19 21:18:42 miod Exp $ */
+/*     $OpenBSD: machdep.c,v 1.139 2014/05/30 13:46:16 mpi Exp $ */
 
 /*
  * Copyright (c) 2003-2004 Opsycon AB  (www.opsycon.se / www.opsycon.com)
@@ -870,7 +870,8 @@ boot(int howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* Extreme priority. */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index a1e0131..803a5c9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.46 2014/05/09 18:16:15 miod Exp $       */
+/*     $OpenBSD: machdep.c,v 1.47 2014/05/30 13:46:16 mpi Exp $        */
 /*     $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $   */
 
 /*
@@ -1064,6 +1064,7 @@ boot(int howto)
 
        uvm_shutdown();
        splhigh();
+       cold = 1;
 
        if ((howto & RB_DUMP))
                dumpsys();
index daa9478..ac79965 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.31 2014/05/25 13:57:48 deraadt Exp $    */
+/*     $OpenBSD: machdep.c,v 1.32 2014/05/30 13:46:16 mpi Exp $        */
 /*     OpenBSD: machdep.c,v 1.105 2005/04/11 15:13:01 deraadt Exp      */
 
 /*
@@ -554,7 +554,8 @@ boot(howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* ??? */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index bafa320..babc719 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.152 2014/05/25 13:57:48 deraadt Exp $   */
+/*     $OpenBSD: machdep.c,v 1.153 2014/05/30 13:46:16 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.85 1997/09/12 08:55:02 pk Exp $ */
 
 /*
@@ -563,7 +563,8 @@ boot(howto)
        if_downall();
 
        uvm_shutdown();
-       (void) splhigh();               /* ??? */
+       splhigh();              /* Disable interrupts. */
+       cold = 1;
 
        if (howto & RB_DUMP)
                dumpsys();
index d55e36a..1ef0bf1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.155 2014/05/25 13:57:48 deraadt Exp $   */
+/*     $OpenBSD: machdep.c,v 1.156 2014/05/30 13:46:17 mpi Exp $       */
 /*     $NetBSD: machdep.c,v 1.108 2001/07/24 19:30:14 eeh Exp $ */
 
 /*-
@@ -648,7 +648,8 @@ boot(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 7bc014b..98a8e3d 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.134 2014/05/25 13:57:48 deraadt Exp $ */
+/* $OpenBSD: machdep.c,v 1.135 2014/05/30 13:46:17 mpi Exp $ */
 /* $NetBSD: machdep.c,v 1.108 2000/09/13 15:00:23 thorpej Exp $         */
 
 /*
@@ -538,7 +538,8 @@ boot(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 e96de3e..8f66e15 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: zaurus_machdep.c,v 1.42 2014/03/29 18:09:30 guenther Exp $    */
+/*     $OpenBSD: zaurus_machdep.c,v 1.43 2014/05/30 13:46:17 mpi Exp $ */
 /*     $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
 
 /*
@@ -315,8 +315,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)