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 14:48:27 +0530 |
| commit | 8ba24ff7129ee12be9e8de7d1fec7bc98da50d98 (patch) | |
| tree | f5c16c0d4e79711fc6f93660ba59a3c028902c65 | |
| parent | e75b7e8470124b4208073c0925678e3e30097734 (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
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 4 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_packet.c | 10 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_sched.c | 19 |
3 files changed, 20 insertions, 13 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index ab165541bf67..3930ec242e8a 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -29840,7 +29840,7 @@ static VOS_STATUS wma_set_beacon_filter(tp_wma_handle wma, ie_map = (A_UINT32 *)(buf + WMI_TLV_HDR_SIZE); for (i = 0; i < BCN_FLT_MAX_ELEMS_IE_LIST; i++) { ie_map[i] = filter_params->ie_map[i]; - WMA_LOGA("beacon filter ie map = %u", ie_map[i]); + WMA_LOGD("beacon filter ie map = %u", ie_map[i]); } vos_status = wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len, @@ -29851,7 +29851,7 @@ static VOS_STATUS wma_set_beacon_filter(tp_wma_handle wma, wmi_buf_free(wmi_buf); return VOS_STATUS_E_FAILURE; } - WMA_LOGA("added beacon filter = %d", vos_status); + WMA_LOGD("added beacon filter = %d", vos_status); return vos_status; } 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 != |
