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

Commit 309fb625 authored by Prasad Sodagudi's avatar Prasad Sodagudi Committed by Gerrit - the friendly Code Review server
Browse files

watchdog: Induce non secure watchdog bite for lockup



Induce non secure watchdog bite when ever kernel soft
lockup or hard lockups are detected. So that proper
context of cpus can be collected for debugging.

Change-Id: I613391d8d53fe52ce7934cdc910fb135c4e0fbf2
Signed-off-by: default avatarPrasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: default avatarChannagoud Kadabi <ckadabi@codeaurora.org>
parent 70fe3174
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <linux/kvm_para.h>
#include <linux/perf_event.h>
#include <linux/kthread.h>
#include <soc/qcom/watchdog.h>

/*
 * The run state of the lockup detectors is controlled by the content of the
@@ -364,8 +365,11 @@ static void watchdog_check_hardlockup_other_cpu(void)
		if (per_cpu(hard_watchdog_warn, next_cpu) == true)
			return;

		if (hardlockup_panic)
			panic("Watchdog detected hard LOCKUP on cpu %u", next_cpu);
		if (hardlockup_panic) {
			pr_err("Watchdog detected hard LOCKUP on cpu %u",
					next_cpu);
			msm_trigger_wdog_bite();
		}
		else
			WARN(1, "Watchdog detected hard LOCKUP on cpu %u", next_cpu);

@@ -427,6 +431,9 @@ static void watchdog_overflow_callback(struct perf_event *event,
			return;

		pr_emerg("Watchdog detected hard LOCKUP on cpu %d", this_cpu);
		if (hardlockup_panic)
			msm_trigger_wdog_bite();

		print_modules();
		print_irqtrace_events(current);
		if (regs)
@@ -549,6 +556,9 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
		pr_emerg("BUG: soft lockup - CPU#%d stuck for %us! [%s:%d]\n",
			smp_processor_id(), duration,
			current->comm, task_pid_nr(current));

		if (softlockup_panic)
			msm_trigger_wdog_bite();
		__this_cpu_write(softlockup_task_ptr_saved, current);
		print_modules();
		print_irqtrace_events(current);