diff options
| author | Rajeev Kumar <rajekuma@qca.qualcomm.com> | 2015-04-03 09:04:25 -0700 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2015-04-08 16:04:18 +0530 |
| commit | 913a67cb8cdeda76093a6bfcdeb08a005ba1fad6 (patch) | |
| tree | 3113a28b0062922e934b34b0c6604468e605107f | |
| parent | 12c985fe67b392b99058f1ff0c0f963b67ea8a20 (diff) | |
qcacld: Add panic if MC thread exits prematurely
Following is theory:
- MC thread wait_event_interruptible is getting interrupted
- Once MC thread is interrupted it exists the execution
- MC thread premature exit leads to many side effects like:
- VOS wrappers runnign out
- Driver unload getting stuck
In order to fix the issue:
- Add panic if MC thread is interrupted
- Once theory is validated fix the real issue by replacing
VOS_BUG by continue such that MC thread can try again and
process all pending events
Change-Id: I6ba35ffd969076543de78153fd317752a691ad1c
CRs-Fixed: 817198
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 3 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_sched.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c index 621877b86213..2e21135125b0 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -1664,7 +1664,8 @@ VOS_STATUS vos_mq_post_message( VOS_MQ_ID msgQueueId, vos_msg_t *pMsg ) if (NULL == pMsgWrapper) { debug_count = atomic_inc_return(&vos_wrapper_empty_count); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + if (1 == debug_count) + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: VOS Core run out of message wrapper %d", __func__, debug_count); diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c index 055d1ec9f26e..f2b1e45a51b7 100644 --- a/CORE/VOSS/src/vos_sched.c +++ b/CORE/VOSS/src/vos_sched.c @@ -821,7 +821,7 @@ VosMCThread { VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: wait_event_interruptible returned -ERESTARTSYS", __func__); - break; + VOS_BUG(0); } clear_bit(MC_POST_EVENT_MASK, &pSchedContext->mcEventFlag); |
