Skip to content

Commit 5800dc3

Browse files
almostivanIngo Molnar
authored andcommitted
panic: Make panic_timeout configurable
The panic_timeout value can be set via the command line option 'panic=x', or via /proc/sys/kernel/panic, however that is not sufficient when the panic occurs before we are able to set up these values. Thus, add a CONFIG_PANIC_TIMEOUT so that we can set the desired value from the .config. The default panic_timeout value continues to be 0 - wait forever. Also adds set_arch_panic_timeout(new_timeout, arch_default_timeout), which is intended to be used by arches in arch_setup(). The idea being that the new_timeout is only set if the user hasn't changed from the arch_default_timeout. Signed-off-by: Jason Baron <jbaron@akamai.com> Cc: benh@kernel.crashing.org Cc: paulus@samba.org Cc: ralf@linux-mips.org Cc: mpe@ellerman.id.au Cc: felipe.contreras@gmail.com Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1a1674daec27c534df409697025ac568ebcee91e.1385418410.git.jbaron@akamai.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent b975dc3 commit 5800dc3

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

include/linux/kernel.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,15 @@ extern int panic_on_oops;
393393
extern int panic_on_unrecovered_nmi;
394394
extern int panic_on_io_nmi;
395395
extern int sysctl_panic_on_stackoverflow;
396+
/*
397+
* Only to be used by arch init code. If the user over-wrote the default
398+
* CONFIG_PANIC_TIMEOUT, honor it.
399+
*/
400+
static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout)
401+
{
402+
if (panic_timeout == arch_default_timeout)
403+
panic_timeout = timeout;
404+
}
396405
extern const char *print_tainted(void);
397406
enum lockdep_ok {
398407
LOCKDEP_STILL_OK,

kernel/panic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static int pause_on_oops;
3333
static int pause_on_oops_flag;
3434
static DEFINE_SPINLOCK(pause_on_oops_lock);
3535

36-
int panic_timeout;
36+
int panic_timeout = CONFIG_PANIC_TIMEOUT;
3737
EXPORT_SYMBOL_GPL(panic_timeout);
3838

3939
ATOMIC_NOTIFIER_HEAD(panic_notifier_list);

lib/Kconfig.debug

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,15 @@ config PANIC_ON_OOPS_VALUE
761761
default 0 if !PANIC_ON_OOPS
762762
default 1 if PANIC_ON_OOPS
763763

764+
config PANIC_TIMEOUT
765+
int "panic timeout"
766+
default 0
767+
help
768+
Set the timeout value (in seconds) until a reboot occurs when the
769+
the kernel panics. If n = 0, then we wait forever. A timeout
770+
value n > 0 will wait n seconds before rebooting, while a timeout
771+
value n < 0 will reboot immediately.
772+
764773
config SCHED_DEBUG
765774
bool "Collect scheduler debugging info"
766775
depends on DEBUG_KERNEL && PROC_FS

0 commit comments

Comments
 (0)