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: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Channagoud Kadabi <ckadabi@codeaurora.org>
This commit is contained in:
Prasad Sodagudi 2017-03-01 15:03:05 -08:00 • committed by Gerrit - the friendly Code Review server
commit 309fb625f9

View file

@ -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);