|
@@ -24,8 +24,33 @@
|
|
|
#include <linux/kvm_para.h>
|
|
|
#include <linux/perf_event.h>
|
|
|
|
|
|
-int watchdog_user_enabled = 1;
|
|
|
+/*
|
|
|
+ * The run state of the lockup detectors is controlled by the content of the
|
|
|
+ * 'watchdog_enabled' variable. Each lockup detector has its dedicated bit -
|
|
|
+ * bit 0 for the hard lockup detector and bit 1 for the soft lockup detector.
|
|
|
+ *
|
|
|
+ * 'watchdog_user_enabled', 'nmi_watchdog_enabled' and 'soft_watchdog_enabled'
|
|
|
+ * are variables that are only used as an 'interface' between the parameters
|
|
|
+ * in /proc/sys/kernel and the internal state bits in 'watchdog_enabled'. The
|
|
|
+ * 'watchdog_thresh' variable is handled differently because its value is not
|
|
|
+ * boolean, and the lockup detectors are 'suspended' while 'watchdog_thresh'
|
|
|
+ * is equal zero.
|
|
|
+ */
|
|
|
+#define NMI_WATCHDOG_ENABLED_BIT 0
|
|
|
+#define SOFT_WATCHDOG_ENABLED_BIT 1
|
|
|
+#define NMI_WATCHDOG_ENABLED (1 << NMI_WATCHDOG_ENABLED_BIT)
|
|
|
+#define SOFT_WATCHDOG_ENABLED (1 << SOFT_WATCHDOG_ENABLED_BIT)
|
|
|
+
|
|
|
+#ifdef CONFIG_HARDLOCKUP_DETECTOR
|
|
|
+static unsigned long __read_mostly watchdog_enabled = SOFT_WATCHDOG_ENABLED|NMI_WATCHDOG_ENABLED;
|
|
|
+#else
|
|
|
+static unsigned long __read_mostly watchdog_enabled = SOFT_WATCHDOG_ENABLED;
|
|
|
+#endif
|
|
|
+int __read_mostly nmi_watchdog_enabled;
|
|
|
+int __read_mostly soft_watchdog_enabled;
|
|
|
+int __read_mostly watchdog_user_enabled;
|
|
|
int __read_mostly watchdog_thresh = 10;
|
|
|
+
|
|
|
#ifdef CONFIG_SMP
|
|
|
int __read_mostly sysctl_softlockup_all_cpu_backtrace;
|
|
|
#else
|