> -----Original Message-----
> From: Hiroshi DOYU [mailto:hiroshi.d...@nokia.com]
> Sent: Monday, June 07, 2010 10:40 PM
> To: o...@wizery.com
> Cc: Chitriki Rudramuni, Deepak; Guzman Lugo, Fernando; Ramirez Luna, Omar;
> Kanigeri, Hari; linux-omap@vger.kernel.org
> Subject: Re: [PATCH v3 4/4] omap: mailbox: convert block api to kfifo
> 
> From: ext Ohad Ben-Cohen <o...@wizery.com>
> Subject: Re: [PATCH v3 4/4] omap: mailbox: convert block api to kfifo
> Date: Mon, 7 Jun 2010 23:40:34 +0200
> 
> > Hi Deepak,
> >
> > On Mon, Jun 7, 2010 at 1:52 PM, Deepak Chitriki <deepak.chitr...@ti.com>
> wrote:
> >> With this patch I observed "inconsistent lock state" warning.
> >
> > Thanks for the report!
> >
> >> Kfifo is acccessed in omap_mbox_msg_send() and mbox_tx_tasklet()
> >> functions.In order to protect this critical section we need to protect
> by
> >> using spin_lock_bh() so that the tasklet cannot preempt
> >> omap_mobx_msg_send().
> >
> > This is actually not the problem: it's ok if mbox_tx_tasklet preempts
> > omap_mbox_msg_send. In fact, such a use case is even ok if we don't
> > take a spinlock at all: kfifo is designed in a way that if you have
> > only 1 consumer and 1 producer, they can both access kfifo
> > simultaneously without any locking. That's why we don't take the
> > spinlock in the mbox_tx_tasklet. The reason, btw, that we take a
> > spinlock in omap_mbox_msg_send is to allow multiple simultaneous
> > sending contexts (taking a spinlock there ensures serialization of
> > those multiple simultaneous sending contexts).
> >
> > The problem here lies in the fact (that I've just learnt) that
> > dspbridge also sends mbox messages from a tasklet context
> > (dpc_tasklet). Lockdep identifies that the spinlock is taken in a
> > softirq context (dspbridge's dpc_tasklet) after it was previously
> > taken in a softirq-enabled context. Your proposed fix will solve the
> > lockdep issue here, but:
> >
> > Do we really want to have tasklets in dspbridge ? Are we that
> > performance critical ?
> 
> Can't a whole contents of bridge_msg_get()/bridge_msg_put() be
> replaced with omap mailbox APIs?
> 
> It seems that dspbridge does the same message queueing and deferred
> execution as omap mailbox does in the above 2 functions. At least
> bridge_msg_put() looks similar to omap_mbox_msg_send(). If this works,
> we can reduce the size of dspbridge again;)

Yes, it has a pretty similar method to send the messages. However the messages 
send by bridge_msg_put() is a shared memory message, which has a cmd fiel and 2 
arguments fields and the bridge used a mailbox message just to indicate to the 
DSP that it has some pending shared memory messages.


Regards,
Fernando.

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to