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>
This commit is contained in:
@@ -393,6 +393,15 @@ extern int panic_on_oops;
|
|||||||
extern int panic_on_unrecovered_nmi;
|
extern int panic_on_unrecovered_nmi;
|
||||||
extern int panic_on_io_nmi;
|
extern int panic_on_io_nmi;
|
||||||
extern int sysctl_panic_on_stackoverflow;
|
extern int sysctl_panic_on_stackoverflow;
|
||||||
|
/*
|
||||||
|
* Only to be used by arch init code. If the user over-wrote the default
|
||||||
|
* CONFIG_PANIC_TIMEOUT, honor it.
|
||||||
|
*/
|
||||||
|
static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout)
|
||||||
|
{
|
||||||
|
if (panic_timeout == arch_default_timeout)
|
||||||
|
panic_timeout = timeout;
|
||||||
|
}
|
||||||
extern const char *print_tainted(void);
|
extern const char *print_tainted(void);
|
||||||
enum lockdep_ok {
|
enum lockdep_ok {
|
||||||
LOCKDEP_STILL_OK,
|
LOCKDEP_STILL_OK,
|
||||||
|
@@ -33,7 +33,7 @@ static int pause_on_oops;
|
|||||||
static int pause_on_oops_flag;
|
static int pause_on_oops_flag;
|
||||||
static DEFINE_SPINLOCK(pause_on_oops_lock);
|
static DEFINE_SPINLOCK(pause_on_oops_lock);
|
||||||
|
|
||||||
int panic_timeout;
|
int panic_timeout = CONFIG_PANIC_TIMEOUT;
|
||||||
EXPORT_SYMBOL_GPL(panic_timeout);
|
EXPORT_SYMBOL_GPL(panic_timeout);
|
||||||
|
|
||||||
ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
|
ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
|
||||||
|
@@ -761,6 +761,15 @@ config PANIC_ON_OOPS_VALUE
|
|||||||
default 0 if !PANIC_ON_OOPS
|
default 0 if !PANIC_ON_OOPS
|
||||||
default 1 if PANIC_ON_OOPS
|
default 1 if PANIC_ON_OOPS
|
||||||
|
|
||||||
|
config PANIC_TIMEOUT
|
||||||
|
int "panic timeout"
|
||||||
|
default 0
|
||||||
|
help
|
||||||
|
Set the timeout value (in seconds) until a reboot occurs when the
|
||||||
|
the kernel panics. If n = 0, then we wait forever. A timeout
|
||||||
|
value n > 0 will wait n seconds before rebooting, while a timeout
|
||||||
|
value n < 0 will reboot immediately.
|
||||||
|
|
||||||
config SCHED_DEBUG
|
config SCHED_DEBUG
|
||||||
bool "Collect scheduler debugging info"
|
bool "Collect scheduler debugging info"
|
||||||
depends on DEBUG_KERNEL && PROC_FS
|
depends on DEBUG_KERNEL && PROC_FS
|
||||||
|
Reference in New Issue
Block a user