Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e122440 authored by Satya Durga Srinivasu Prabhala's avatar Satya Durga Srinivasu Prabhala Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent 0362218e
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -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