watchdog: move softlockup_panic back to early_param
Setting softlockup_panic from do_sysctl_args() causes it to take effect later in boot. The lockup detector is enabled before SMP is brought online, but do_sysctl_args runs afterwards. If a user wants to set softlockup_panic on boot and have it trigger should a softlockup occur during onlining of the non-boot processors, they could do this prior to commitf117955a22
("kernel/watchdog.c: convert {soft/hard}lockup boot parameters to sysctl aliases"). However, after this commit the value of softlockup_panic is set too late to be of help for this type of problem. Restore the prior behavior. Signed-off-by: Krister Johansen <kjlx@templeofstupid.com> Cc: stable@vger.kernel.org Fixes:f117955a22
("kernel/watchdog.c: convert {soft/hard}lockup boot parameters to sysctl aliases") Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
This commit is contained in:
parent
8001f49394
commit
8b793bcda6
@ -1576,7 +1576,6 @@ static const struct sysctl_alias sysctl_aliases[] = {
|
|||||||
{"hung_task_panic", "kernel.hung_task_panic" },
|
{"hung_task_panic", "kernel.hung_task_panic" },
|
||||||
{"numa_zonelist_order", "vm.numa_zonelist_order" },
|
{"numa_zonelist_order", "vm.numa_zonelist_order" },
|
||||||
{"softlockup_all_cpu_backtrace", "kernel.softlockup_all_cpu_backtrace" },
|
{"softlockup_all_cpu_backtrace", "kernel.softlockup_all_cpu_backtrace" },
|
||||||
{"softlockup_panic", "kernel.softlockup_panic" },
|
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -283,6 +283,13 @@ static DEFINE_PER_CPU(struct hrtimer, watchdog_hrtimer);
|
|||||||
static DEFINE_PER_CPU(bool, softlockup_touch_sync);
|
static DEFINE_PER_CPU(bool, softlockup_touch_sync);
|
||||||
static unsigned long soft_lockup_nmi_warn;
|
static unsigned long soft_lockup_nmi_warn;
|
||||||
|
|
||||||
|
static int __init softlockup_panic_setup(char *str)
|
||||||
|
{
|
||||||
|
softlockup_panic = simple_strtoul(str, NULL, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
__setup("softlockup_panic=", softlockup_panic_setup);
|
||||||
|
|
||||||
static int __init nowatchdog_setup(char *str)
|
static int __init nowatchdog_setup(char *str)
|
||||||
{
|
{
|
||||||
watchdog_user_enabled = 0;
|
watchdog_user_enabled = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user