Hi Deepak, On Wed, 2010-02-10 at 02:01 +0100, ext Deepak Chitriki wrote: > This patch fixes possible recursive locking detection.The implementation > in which the spinlock is acquired and released is rectified in WMD_MSG_Get() > to avoid locking contention. > Added SYNC_EnterCS() and SYNC_LeaveCS()in WMD_MSG_Get()function. > > Cc: Ameya Palande <ameya.palande@xxxxxxxxx> > Cc: Omar Ramirez Luna <omar.ramirez@xxxxxx> > Cc: Nishanth Menon <nm@xxxxxx> > > Signed-off-by: Deepak Chitriki <deepak.chitriki@xxxxxx> > --- > drivers/dsp/bridge/wmd/msg_sm.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/dsp/bridge/wmd/msg_sm.c b/drivers/dsp/bridge/wmd/msg_sm.c > index 50201e5..8faf5ad 100644 > --- a/drivers/dsp/bridge/wmd/msg_sm.c > +++ b/drivers/dsp/bridge/wmd/msg_sm.c > @@ -300,8 +300,10 @@ DSP_STATUS WMD_MSG_Get(struct MSG_QUEUE *hMsgQueue, > if (LST_IsEmpty(hMsgQueue->msgUsedList)) > SYNC_ResetEvent(hMsgQueue->hSyncEvent); > else { > + (void)SYNC_LeaveCS(hMsgMgr->hSyncCS); > NTFY_Notify(hMsgQueue->hNtfy, > DSP_NODEMESSAGEREADY); > + (void)SYNC_EnterCS(hMsgMgr->hSyncCS); > SYNC_SetEvent(hMsgQueue->hSyncEvent); > } > > @@ -352,8 +354,10 @@ DSP_STATUS WMD_MSG_Get(struct MSG_QUEUE *hMsgQueue, > hMsgQueue->refCount--; > /* Reset the event if there are still queued messages */ > if (!LST_IsEmpty(hMsgQueue->msgUsedList)) { > + (void)SYNC_LeaveCS(hMsgMgr->hSyncCS); > NTFY_Notify(hMsgQueue->hNtfy, > DSP_NODEMESSAGEREADY); > + (void)SYNC_EnterCS(hMsgMgr->hSyncCS); > SYNC_SetEvent(hMsgQueue->hSyncEvent); > } > /* Exit critical section */ Can you explain the need of calling NTFY_Notify() in WMD_MSG_Get()? I can see that the InputMsg calls NTFY_Notify() already! Can we get rid of NTFY_Notify() from WMD_MSG_Get() all together? Cheers, Ameya. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html