diff options
Diffstat (limited to 'arch/powerpc/kernel/watchdog.c')
| -rw-r--r-- | arch/powerpc/kernel/watchdog.c | 31 | 
1 files changed, 16 insertions, 15 deletions
| diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c index 2f6eadd9408d..57190f384f63 100644 --- a/arch/powerpc/kernel/watchdog.c +++ b/arch/powerpc/kernel/watchdog.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Watchdog support on powerpc systems.   * @@ -310,9 +311,6 @@ static int start_wd_on_cpu(unsigned int cpu)  	if (!(watchdog_enabled & NMI_WATCHDOG_ENABLED))  		return 0; -	if (watchdog_suspended) -		return 0; -  	if (!cpumask_test_cpu(cpu, &watchdog_cpumask))  		return 0; @@ -358,36 +356,39 @@ static void watchdog_calc_timeouts(void)  	wd_timer_period_ms = watchdog_thresh * 1000 * 2 / 5;  } -void watchdog_nmi_reconfigure(void) +void watchdog_nmi_stop(void)  {  	int cpu; -	watchdog_calc_timeouts(); -  	for_each_cpu(cpu, &wd_cpus_enabled)  		stop_wd_on_cpu(cpu); +} +void watchdog_nmi_start(void) +{ +	int cpu; + +	watchdog_calc_timeouts();  	for_each_cpu_and(cpu, cpu_online_mask, &watchdog_cpumask)  		start_wd_on_cpu(cpu);  }  /* - * This runs after lockup_detector_init() which sets up watchdog_cpumask. + * Invoked from core watchdog init.   */ -static int __init powerpc_watchdog_init(void) +int __init watchdog_nmi_probe(void)  {  	int err; -	watchdog_calc_timeouts(); - -	err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "powerpc/watchdog:online", -				start_wd_on_cpu, stop_wd_on_cpu); -	if (err < 0) +	err = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, +					"powerpc/watchdog:online", +					start_wd_on_cpu, stop_wd_on_cpu); +	if (err < 0) {  		pr_warn("Watchdog could not be initialized"); - +		return err; +	}  	return 0;  } -arch_initcall(powerpc_watchdog_init);  static void handle_backtrace_ipi(struct pt_regs *regs)  { |