Both graphics and serial consoles are exposed to hard lockups when handling a large amount of messaging. The kernel watchdog_thresh parameter up to now has not been available to be set on the kernel line for early boot. This patch allows the setting of watchdog_thresh to be increased when needed to avoid the hard lockups in the console code.
Signed-off-by: Laurence Oberman <lober...@redhat.com> Acked-by: Randy Dunlap <rdun...@infradead.org> --- Documentation/admin-guide/kernel-parameters.txt | 7 +++++++ init/main.c | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 4cdcd1a..102382f 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4932,6 +4932,13 @@ or other driver-specific files in the Documentation/watchdog/ directory. + watchdog_thresh= + This parameter allows early boot to change the + value of the watchdog timeout threshold from the default + of 10 seconds to avoid hard lockups. Example: + watchdog_thresh=30 + Default: 10 + workqueue.watchdog_thresh= If CONFIG_WQ_WATCHDOG is configured, workqueue can warn stall conditions and dump internal state to diff --git a/init/main.c b/init/main.c index 1c3f902..d5511a9 100644 --- a/init/main.c +++ b/init/main.c @@ -1038,6 +1038,17 @@ static int __init set_debug_rodata(char *str) __setup("rodata=", set_debug_rodata); #endif +#ifdef CONFIG_LOCKUP_DETECTOR +extern int watchdog_thresh; + +static int __init watchdog_thresh_setup(char *str) +{ + get_option(&str, &watchdog_thresh); + return 1; +} +__setup("watchdog_thresh=", watchdog_thresh_setup); +#endif + #ifdef CONFIG_STRICT_KERNEL_RWX static void mark_readonly(void) { -- 1.8.3.1