Commit 897aea30 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'core-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull core debug changes from Ingo Molnar:
 "Currently there are two methods to set the panic_timeout: via
  'panic=X' boot commandline option, or via /proc/sys/kernel/panic.

  This tree adds a third panic_timeout configuration method:
  configuration via Kconfig, via CONFIG_PANIC_TIMEOUT=X - useful to
  distros that generally want their kernel defaults to come with the
  .config.

  CONFIG_PANIC_TIMEOUT defaults to 0, which was the previous default
  value of panic_timeout.

  Doing that unearthed a few arch trickeries regarding arch-special
  panic_timeout values and related complications - hopefully all
  resolved to the satisfaction of everyone"

* 'core-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  powerpc: Clean up panic_timeout usage
  MIPS: Remove panic_timeout settings
  panic: Make panic_timeout configurable
parents 9451ee2d b71d47c1
...@@ -92,7 +92,6 @@ void __init plat_mem_setup(void) ...@@ -92,7 +92,6 @@ void __init plat_mem_setup(void)
_machine_restart = ar7_machine_restart; _machine_restart = ar7_machine_restart;
_machine_halt = ar7_machine_halt; _machine_halt = ar7_machine_halt;
pm_power_off = ar7_machine_power_off; pm_power_off = ar7_machine_power_off;
panic_timeout = 3;
io_base = (unsigned long)ioremap(AR7_REGS_BASE, 0x10000); io_base = (unsigned long)ioremap(AR7_REGS_BASE, 0x10000);
if (!io_base) if (!io_base)
......
...@@ -111,9 +111,6 @@ void __init plat_mem_setup(void) ...@@ -111,9 +111,6 @@ void __init plat_mem_setup(void)
iomem_resource.start = EMMA2RH_IO_BASE; iomem_resource.start = EMMA2RH_IO_BASE;
iomem_resource.end = EMMA2RH_ROM_BASE - 1; iomem_resource.end = EMMA2RH_ROM_BASE - 1;
/* Reboot on panic */
panic_timeout = 180;
markeins_sio_setup(); markeins_sio_setup();
} }
......
...@@ -92,7 +92,6 @@ static void __init xlp_init_mem_from_bars(void) ...@@ -92,7 +92,6 @@ static void __init xlp_init_mem_from_bars(void)
void __init plat_mem_setup(void) void __init plat_mem_setup(void)
{ {
panic_timeout = 5;
_machine_restart = (void (*)(char *))nlm_linux_exit; _machine_restart = (void (*)(char *))nlm_linux_exit;
_machine_halt = nlm_linux_exit; _machine_halt = nlm_linux_exit;
pm_power_off = nlm_linux_exit; pm_power_off = nlm_linux_exit;
......
...@@ -92,7 +92,6 @@ static void nlm_linux_exit(void) ...@@ -92,7 +92,6 @@ static void nlm_linux_exit(void)
void __init plat_mem_setup(void) void __init plat_mem_setup(void)
{ {
panic_timeout = 5;
_machine_restart = (void (*)(char *))nlm_linux_exit; _machine_restart = (void (*)(char *))nlm_linux_exit;
_machine_halt = nlm_linux_exit; _machine_halt = nlm_linux_exit;
pm_power_off = nlm_linux_exit; pm_power_off = nlm_linux_exit;
......
...@@ -134,8 +134,6 @@ void __init plat_mem_setup(void) ...@@ -134,8 +134,6 @@ void __init plat_mem_setup(void)
#error invalid SiByte board configuration #error invalid SiByte board configuration
#endif #endif
panic_timeout = 5; /* For debug. */
board_be_handler = swarm_be_handler; board_be_handler = swarm_be_handler;
if (xicor_probe()) if (xicor_probe())
......
...@@ -147,6 +147,10 @@ config EARLY_PRINTK ...@@ -147,6 +147,10 @@ config EARLY_PRINTK
bool bool
default y default y
config PANIC_TIMEOUT
int
default 180
config COMPAT config COMPAT
bool bool
default y if PPC64 default y if PPC64
......
...@@ -26,6 +26,7 @@ extern void reloc_got2(unsigned long); ...@@ -26,6 +26,7 @@ extern void reloc_got2(unsigned long);
void check_for_initrd(void); void check_for_initrd(void);
void do_init_bootmem(void); void do_init_bootmem(void);
void setup_panic(void); void setup_panic(void);
#define ARCH_PANIC_TIMEOUT 180
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
...@@ -296,9 +296,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -296,9 +296,6 @@ void __init setup_arch(char **cmdline_p)
if (cpu_has_feature(CPU_FTR_UNIFIED_ID_CACHE)) if (cpu_has_feature(CPU_FTR_UNIFIED_ID_CACHE))
ucache_bsize = icache_bsize = dcache_bsize; ucache_bsize = icache_bsize = dcache_bsize;
/* reboot on panic */
panic_timeout = 180;
if (ppc_md.panic) if (ppc_md.panic)
setup_panic(); setup_panic();
......
...@@ -588,9 +588,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -588,9 +588,6 @@ void __init setup_arch(char **cmdline_p)
dcache_bsize = ppc64_caches.dline_size; dcache_bsize = ppc64_caches.dline_size;
icache_bsize = ppc64_caches.iline_size; icache_bsize = ppc64_caches.iline_size;
/* reboot on panic */
panic_timeout = 180;
if (ppc_md.panic) if (ppc_md.panic)
setup_panic(); setup_panic();
......
...@@ -470,7 +470,7 @@ static long pseries_little_endian_exceptions(void) ...@@ -470,7 +470,7 @@ static long pseries_little_endian_exceptions(void)
static void __init pSeries_setup_arch(void) static void __init pSeries_setup_arch(void)
{ {
panic_timeout = 10; set_arch_panic_timeout(10, ARCH_PANIC_TIMEOUT);
/* Discover PIC type and setup ppc_md accordingly */ /* Discover PIC type and setup ppc_md accordingly */
pseries_discover_pic(); pseries_discover_pic();
......
...@@ -394,6 +394,15 @@ extern int panic_on_oops; ...@@ -394,6 +394,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; ...@@ -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 ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment