panic: panic=-1 for immediate reboot
authorHugh Dickins <[email protected]>
Tue, 26 Jul 2011 23:08:52 +0000 (16:08 -0700)
committerLinus Torvalds <[email protected]>
Tue, 26 Jul 2011 23:49:45 +0000 (16:49 -0700)
When a kernel BUG or oops occurs, ChromeOS intends to panic and
immediately reboot, with stacktrace and other messages preserved in RAM
across reboot.

But the longer we delay, the more likely the user is to poweroff and
lose the info.

panic_timeout (seconds before rebooting) is set by panic= boot option or
sysctl or /proc/sys/kernel/panic; but 0 means wait forever, so at
present we have to delay at least 1 second.

Let a negative number mean reboot immediately (with the small cosmetic
benefit of suppressing that newline-less "Rebooting in %d seconds.."
message).

Signed-off-by: Hugh Dickins <[email protected]>
Signed-off-by: Mandeep Singh Baines <[email protected]>
Cc: Huang Ying <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Hugh Dickins <[email protected]>
Cc: Olaf Hering <[email protected]>
Cc: Jesse Barnes <[email protected]>
Cc: Dave Airlie <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Alan Cox <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Documentation/kernel-parameters.txt
kernel/panic.c

index a70e43edcb65c9d732d3877499410b487911d213..4ca93898fbd3d984a3bccf550b5281d3f0a90e56 100644 (file)
@@ -1846,7 +1846,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        See Documentation/sound/oss/oss-parameters.txt
 
        panic=          [KNL] Kernel behaviour on panic: delay <timeout>
-                       seconds before rebooting
+                       timeout > 0: seconds before rebooting
+                       timeout = 0: wait forever
+                       timeout < 0: reboot immediately
                        Format: <timeout>
 
        parkbd.port=    [HW] Parallel port number the keyboard adapter is
index 69231670eb952357809488fa58cffef5596e9c63..d7bb6974efb56b6070a6c9067bd87ba55a7273da 100644 (file)
@@ -119,6 +119,8 @@ NORET_TYPE void panic(const char * fmt, ...)
                        }
                        mdelay(PANIC_TIMER_STEP);
                }
+       }
+       if (panic_timeout != 0) {
                /*
                 * This will not be a clean reboot, with everything
                 * shutting down.  But if there is a chance of