watchdog/core: Add watchdog_thresh command line parameter
authorLaurence Oberman <loberman@redhat.com>
Thu, 1 Nov 2018 13:30:18 +0000 (09:30 -0400)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 1 Nov 2018 13:33:35 +0000 (14:33 +0100)
The hard and soft lockup detector threshold has a default value of 10
seconds which can only be changed via sysctl.

During early boot lockup detection can trigger when noisy debugging emits
a large amount of messages to the console, but there is no way to set a
larger threshold on the kernel command line. The detector can only be
completely disabled.

Add a new watchdog_thresh= command line parameter to allow boot time
control over the threshold. It works in the same way as the sysctl and
affects both the soft and the hard lockup detectors.

Signed-off-by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: rdunlap@infradead.org
Cc: prarit@redhat.com
Link: https://lkml.kernel.org/r/1541079018-13953-1-git-send-email-loberman@redhat.com
Documentation/admin-guide/kernel-parameters.txt
kernel/watchdog.c

index b90fe3b6bc6c78555d5470bbfec95fd7bd691063..79b5b473001b207202a963b9341831a0b73e7442 100644 (file)
                        or other driver-specific files in the
                        Documentation/watchdog/ directory.
 
+       watchdog_thresh=
+                       [KNL]
+                       Set the hard lockup detector stall duration
+                       threshold in seconds. The soft lockup detector
+                       threshold is set to twice the value. A value of 0
+                       disables both lockup detectors. Default is 10
+                       seconds.
+
        workqueue.watchdog_thresh=
                        If CONFIG_WQ_WATCHDOG is configured, workqueue can
                        warn stall conditions and dump internal state to
index 977918d5d3501b1447781c91aedbe8fadad05ada..8fbfda94a67be8e6fe587e5425d1773e351b7431 100644 (file)
@@ -199,6 +199,13 @@ static int __init nosoftlockup_setup(char *str)
 }
 __setup("nosoftlockup", nosoftlockup_setup);
 
+static int __init watchdog_thresh_setup(char *str)
+{
+       get_option(&str, &watchdog_thresh);
+       return 1;
+}
+__setup("watchdog_thresh=", watchdog_thresh_setup);
+
 #ifdef CONFIG_SMP
 int __read_mostly sysctl_softlockup_all_cpu_backtrace;