[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86: adjust initial setting of watchdog kind
"watchdog_timeout=0" is documented to disable the watchdog. Make sure this also is true when there's a subsequent "watchdog" command line option (and no further "watchdog_timeout=" one). While there also switch watchdog_setup() to returning void, bringing it in line with the !CONFIG_WATCHDOG case. Further amend command line documentation to also mention the implicit effect of specifying a non- zero timeout. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- Alternatively "watchdog" following "watchdog_timeout=0" could be taken to mean to use the default timeout again. Really I think the comment in watchdog_setup() is wrong, and the function would hence better go away. The CPU notifier registration can surely be done in a pre-SMP initcall, which would have the benefit of boot-time AP bringup then working the same as runtime CPU-onlining. (In particular the set_timer() out of CPU_UP_PREPARE is a little suspicious, as the timer can't possibly be run right away when a CPU isn't online yet.) Which would leave __start_xen() to call watchdog_enable() in the place it's calling watchdog_setup() now. --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -2795,7 +2795,7 @@ unknown NMIs will still be processed. > Default: `5` Set the NMI watchdog timeout in seconds. Specifying `0` will turn off -the watchdog. +the watchdog. Specifying a non-zero value enables the watchdog. ### x2apic (x86) > `= <boolean>` --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -473,7 +473,16 @@ bool watchdog_enabled(void) return !atomic_read(&watchdog_disable_count); } -int __init watchdog_setup(void) +void __init watchdog_configure(void) +{ + if ( !opt_watchdog_timeout ) + opt_watchdog = false; + + if ( opt_watchdog ) + nmi_watchdog = NMI_LOCAL_APIC; +} + +void __init watchdog_setup(void) { unsigned int cpu; @@ -486,7 +495,6 @@ int __init watchdog_setup(void) register_cpu_notifier(&cpu_nmi_nfb); watchdog_enable(); - return 0; } /* Returns false if this was not a watchdog NMI, true otherwise */ --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1783,8 +1783,7 @@ void asmlinkage __init noreturn __start_ open_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ, new_tlbflush_clock_period); - if ( opt_watchdog ) - nmi_watchdog = NMI_LOCAL_APIC; + watchdog_configure(); find_smp_config(); --- a/xen/include/xen/watchdog.h +++ b/xen/include/xen/watchdog.h @@ -11,8 +11,11 @@ #ifdef CONFIG_WATCHDOG +/* Configure what, if any, watchdog to (try to) use. */ +void watchdog_configure(void); + /* Try to set up a watchdog. */ -int watchdog_setup(void); +void watchdog_setup(void); /* Enable the watchdog. */ void watchdog_enable(void);
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |