diff options
author | Prasad Sodagudi <psodagud@codeaurora.org> | 2017-03-01 15:03:05 -0800 |
---|---|---|
committer | Prasad Sodagudi <psodagud@codeaurora.org> | 2017-03-02 12:55:47 -0800 |
commit | db79acdf6fc2f400bf7445d2c69489af70651d52 (patch) | |
tree | a6c91e08ba7e9413deb65a65986dbe259e0bed7a /kernel | |
parent | 3e14267831b4e4befaa949aa001f0b340715c01b (diff) |
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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/watchdog.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/watchdog.c b/kernel/watchdog.c index f2813e137b23..91fa701b4a24 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -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 @@ -366,8 +367,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); @@ -430,6 +434,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) @@ -552,6 +559,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); |