aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt5
-rw-r--r--kernel/watchdog.c5
-rw-r--r--lib/Kconfig.debug17
3 files changed, 24 insertions, 3 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index a3b688287a8d..e9261e938f6a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1597,11 +1597,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1597 Format: [state][,regs][,debounce][,die] 1597 Format: [state][,regs][,debounce][,die]
1598 1598
1599 nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels 1599 nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels
1600 Format: [panic,][num] 1600 Format: [panic,][nopanic,][num]
1601 Valid num: 0 1601 Valid num: 0
1602 0 - turn nmi_watchdog off 1602 0 - turn nmi_watchdog off
1603 When panic is specified, panic when an NMI watchdog 1603 When panic is specified, panic when an NMI watchdog
1604 timeout occurs. 1604 timeout occurs (or 'nopanic' to override the opposite
1605 default).
1605 This is useful when you use a panic=... timeout and 1606 This is useful when you use a panic=... timeout and
1606 need the box quickly up again. 1607 need the box quickly up again.
1607 1608
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 18bb15776c57..054a67cca9da 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -48,12 +48,15 @@ static DEFINE_PER_CPU(struct perf_event *, watchdog_ev);
48 * Should we panic when a soft-lockup or hard-lockup occurs: 48 * Should we panic when a soft-lockup or hard-lockup occurs:
49 */ 49 */
50#ifdef CONFIG_HARDLOCKUP_DETECTOR 50#ifdef CONFIG_HARDLOCKUP_DETECTOR
51static int hardlockup_panic; 51static int hardlockup_panic =
52 CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE;
52 53
53static int __init hardlockup_panic_setup(char *str) 54static int __init hardlockup_panic_setup(char *str)
54{ 55{
55 if (!strncmp(str, "panic", 5)) 56 if (!strncmp(str, "panic", 5))
56 hardlockup_panic = 1; 57 hardlockup_panic = 1;
58 else if (!strncmp(str, "nopanic", 7))
59 hardlockup_panic = 0;
57 else if (!strncmp(str, "0", 1)) 60 else if (!strncmp(str, "0", 1))
58 watchdog_enabled = 0; 61 watchdog_enabled = 0;
59 return 1; 62 return 1;
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 191c5c4c89fc..fb0afeff9436 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -171,6 +171,23 @@ config HARDLOCKUP_DETECTOR
171 def_bool LOCKUP_DETECTOR && PERF_EVENTS && HAVE_PERF_EVENTS_NMI && \ 171 def_bool LOCKUP_DETECTOR && PERF_EVENTS && HAVE_PERF_EVENTS_NMI && \
172 !ARCH_HAS_NMI_WATCHDOG 172 !ARCH_HAS_NMI_WATCHDOG
173 173
174config BOOTPARAM_HARDLOCKUP_PANIC
175 bool "Panic (Reboot) On Hard Lockups"
176 depends on LOCKUP_DETECTOR
177 help
178 Say Y here to enable the kernel to panic on "hard lockups",
179 which are bugs that cause the kernel to loop in kernel
180 mode with interrupts disabled for more than 60 seconds.
181
182 Say N if unsure.
183
184config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
185 int
186 depends on LOCKUP_DETECTOR
187 range 0 1
188 default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
189 default 1 if BOOTPARAM_HARDLOCKUP_PANIC
190
174config BOOTPARAM_SOFTLOCKUP_PANIC 191config BOOTPARAM_SOFTLOCKUP_PANIC
175 bool "Panic (Reboot) On Soft Lockups" 192 bool "Panic (Reboot) On Soft Lockups"
176 depends on LOCKUP_DETECTOR 193 depends on LOCKUP_DETECTOR