diff options
| author | Padma, Santhosh Kumar <skpadma@qti.qualcomm.com> | 2016-06-21 14:26:44 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-06-23 16:31:53 +0530 |
| commit | 6ee48f12b3673f01fb2e6b8c3b09bfd9e1c81a47 (patch) | |
| tree | f5c16c0d4e79711fc6f93660ba59a3c028902c65 /CORE/VOSS/src | |
| parent | 2c21313fef9d03993796a3023709c6e4a467af78 (diff) | |
qcacld-2.0: Dump stack only once
Add changes to dump stack only once. Also, change thread stuck
timer to 10 seconds from 5 seconds (THREAD_STUCK_TIMER_VAL) and
probe thread only when thread stuck counter is zero to avoid
out of wrapper messages. Remove unnecessary error logs also.
Change-Id: I6c2ab331256b190fd0ce67f8fb95ed4d7cb5e61a
CRs-Fixed: 1032098
Diffstat (limited to 'CORE/VOSS/src')
| -rw-r--r-- | CORE/VOSS/src/vos_packet.c | 10 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_sched.c | 19 |
2 files changed, 18 insertions, 11 deletions
diff --git a/CORE/VOSS/src/vos_packet.c b/CORE/VOSS/src/vos_packet.c index 3844fbfd0975..9a8179cbdd01 100644 --- a/CORE/VOSS/src/vos_packet.c +++ b/CORE/VOSS/src/vos_packet.c @@ -342,10 +342,10 @@ void vos_pkt_trace_buf_dump unsigned long local_time; spin_lock_bh(&trace_buffer_lock); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, "PACKET TRACE DUMP START Current Timestamp %u", (unsigned int)vos_timer_get_system_time()); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, "ORDER : RTC TIME : EVT"); if (VOS_PKT_TRAC_MAX_TRACE_BUF > trace_buffer_order) @@ -355,7 +355,7 @@ void vos_pkt_trace_buf_dump local_time = (u32)(trace_buffer[slot].event_sec_time - (sys_tz.tz_minuteswest * 60)); rtc_time_to_tm(local_time, &tm); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, "%5d : [%02d:%02d:%02d.%06lu] : %s", trace_buffer[slot].order, tm.tm_hour, tm.tm_min, tm.tm_sec, @@ -371,7 +371,7 @@ void vos_pkt_trace_buf_dump local_time = (u32)(trace_buffer[slot].event_msec_time - (sys_tz.tz_minuteswest * 60)); rtc_time_to_tm(local_time, &tm); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, "%5d : [%02d:%02d:%02d.%06lu] : %s", trace_buffer[slot].order, tm.tm_hour, tm.tm_min, tm.tm_sec, @@ -380,7 +380,7 @@ void vos_pkt_trace_buf_dump } } - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, "PACKET TRACE DUMP END"); spin_unlock_bh(&trace_buffer_lock); diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c index 03ce10e62e7e..bfe5b3a1f4fe 100644 --- a/CORE/VOSS/src/vos_sched.c +++ b/CORE/VOSS/src/vos_sched.c @@ -76,7 +76,8 @@ #define MAX_SSR_PROTECT_LOG (16) /* Timer value for detecting thread stuck issues */ -#define THREAD_STUCK_TIMER_VAL 5000 /* 5 seconds */ +#define THREAD_STUCK_TIMER_VAL 10000 /* 10 seconds */ +#define THREAD_STUCK_THRESHOLD 1 static atomic_t ssr_protect_entry_count; static atomic_t load_unload_protect_count; @@ -988,12 +989,11 @@ static void vos_wd_detect_thread_stuck(void) spin_lock_irqsave(&gpVosWatchdogContext->thread_stuck_lock, flags); - if (gpVosWatchdogContext->mc_thread_stuck_count) { + if (gpVosWatchdogContext->mc_thread_stuck_count == + THREAD_STUCK_THRESHOLD) { spin_unlock_irqrestore(&gpVosWatchdogContext->thread_stuck_lock, flags); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s: Thread Stuck!!! MC Count %d", __func__, - gpVosWatchdogContext->mc_thread_stuck_count); + hddLog(LOGE, FL("MC Thread Stuck!!!")); vos_dump_stack(gpVosSchedContext->McThread); vos_flush_logs(WLAN_LOG_TYPE_FATAL, @@ -1004,11 +1004,18 @@ static void vos_wd_detect_thread_stuck(void) flags); } + if (!gpVosWatchdogContext->mc_thread_stuck_count) { + spin_unlock_irqrestore(&gpVosWatchdogContext->thread_stuck_lock, + flags); + vos_probe_threads(); + spin_lock_irqsave(&gpVosWatchdogContext->thread_stuck_lock, + flags); + } + /* Increment the thread stuck count for all threads */ gpVosWatchdogContext->mc_thread_stuck_count++; spin_unlock_irqrestore(&gpVosWatchdogContext->thread_stuck_lock, flags); - vos_probe_threads(); /* Restart the timer */ if (VOS_STATUS_SUCCESS != |
