watchdog: use per_cpu_ptr() in watchdog_disable()

Watchdog gets disabled from other CPUs when isolation is enabled.
Using this_cpu_ptr() would lead to undesired issues, so, switch to
per_cpu_ptr(). While at it, remove warning as it makes no sense
when core isolation is enabled.

Change-Id: Id1a59c4c88044c7570457fb55abb2dcc13de3c11
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
This commit is contained in:
Satya Durga Srinivasu Prabhala
2019-02-25 13:06:12 -08:00
committed by Gerrit - the friendly Code Review server
parent 0362218e2d
commit 4e1224407a

View File

@@ -519,14 +519,12 @@ void watchdog_enable(unsigned int cpu)
void watchdog_disable(unsigned int cpu)
{
struct hrtimer *hrtimer = this_cpu_ptr(&watchdog_hrtimer);
unsigned int *enabled = this_cpu_ptr(&watchdog_en);
struct hrtimer *hrtimer = per_cpu_ptr(&watchdog_hrtimer, cpu);
unsigned int *enabled = per_cpu_ptr(&watchdog_en, cpu);
if (!*enabled)
return;
WARN_ON_ONCE(cpu != smp_processor_id());
/*
* Disable the perf event first. That prevents that a large delay
* between disabling the timer and disabling the perf event causes
@@ -534,7 +532,7 @@ void watchdog_disable(unsigned int cpu)
*/
watchdog_nmi_disable(cpu);
hrtimer_cancel(hrtimer);
wait_for_completion(this_cpu_ptr(&softlockup_completion));
wait_for_completion(per_cpu_ptr(&softlockup_completion, cpu));
/*
* No need for barrier here since disabling the watchdog is