On Wed, 27 Feb 2019, Ricardo Neri wrote: > + When hpet is specified, the NMI watchdog will be driven > + by an HPET timer, if available in the system. Otherwise, > + the perf-based implementation will be used. Specifying > + hpet implies that nmi_watchdog is on.
How so? > +static int __init hardlockup_detector_hpet_setup(char *str) > +{ > + if (strstr(str, "hpet")) > + hardlockup_use_hpet = true; strstr()? Not really. > + > + return 0; > +} > +__setup("nmi_watchdog=", hardlockup_detector_hpet_setup); > + > /** > * hardlockup_detector_hpet_init() - Initialize the hardlockup detector > * > @@ -405,6 +422,9 @@ int __init hardlockup_detector_hpet_init(void) > { > int ret; > > + if (!hardlockup_use_hpet) > + return -ENODEV; This should have been there in the patch which introduces hardlockup_detector_hpet_init(). And this patch merily adds the command line magic which sets that flag. > + > if (!is_hpet_enabled()) > return -ENODEV; > > diff --git a/kernel/watchdog.c b/kernel/watchdog.c > index 367aa81294ef..28cad7310378 100644 > --- a/kernel/watchdog.c > +++ b/kernel/watchdog.c > @@ -78,7 +78,7 @@ static int __init hardlockup_panic_setup(char *str) > nmi_watchdog_user_enabled = 0; > else if (!strncmp(str, "1", 1)) > nmi_watchdog_user_enabled = 1; > - return 1; > + return 0; Why? Thanks, tglx