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

Commit 4f659aa5 authored by Prasad Sodagudi's avatar Prasad Sodagudi
Browse files

rcu: Induce msm watchdog bite for rcu stalls



Every RCU stall need to be debugged, So collect the ram
dumps on every RCU stall to debug further by inducing
non secure watchdog bite whenever rcu stall detected.

Change-Id: I6c1cfddc92f06b48c3f22fe9970b70f2ec670bf6
Signed-off-by: default avatarPrasad Sodagudi <psodagud@codeaurora.org>
parent 647076b6
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -57,6 +57,8 @@
#include <linux/trace_events.h>
#include <linux/suspend.h>

#include <soc/qcom/watchdog.h>

#include "tree.h"
#include "rcu.h"

@@ -1298,6 +1300,11 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum)

	rcu_check_gp_kthread_starvation(rsp);

#ifdef CONFIG_RCU_STALL_WATCHDOG_BITE
	/* Induce watchdog bite */
	msm_trigger_wdog_bite();
#endif

	force_quiescent_state(rsp);  /* Kick them all. */
}

@@ -1333,6 +1340,11 @@ static void print_cpu_stall(struct rcu_state *rsp)
			   jiffies + 3 * rcu_jiffies_till_stall_check() + 3);
	raw_spin_unlock_irqrestore(&rnp->lock, flags);

#ifdef CONFIG_RCU_STALL_WATCHDOG_BITE
	/* Induce non secure watchdog bite to collect context */
	msm_trigger_wdog_bite();
#endif

	/*
	 * Attempt to revive the RCU machinery by forcing a context switch.
	 *
+11 −0
Original line number Diff line number Diff line
@@ -1455,6 +1455,17 @@ config RCU_CPU_STALL_TIMEOUT
	  RCU grace period persists, additional CPU stall warnings are
	  printed at more widely spaced intervals.

config RCU_STALL_WATCHDOG_BITE
	bool "RCU stall induce watchdog bite"
	depends on RCU_STALL_COMMON && QCOM_WATCHDOG_V2
	help
	  Induce watchdog bite if RCU grace period extends more than
	  specified no of seconds instead of just warning messages.
	  This helps to collect ram dumps and cpu context for
	  postmortem analysis. Generally if a given RCU grace period
	  extends more than the specified number of seconds,
	  a CPU stall warning is printed.

config RCU_TRACE
	bool "Enable tracing for RCU"
	depends on DEBUG_KERNEL