Hello Dan, Thomas is a bit busy right now, so I'm picking this where he left it. On Dec 31, Dan Williams wrote: > On Fri, Dec 27, 2013 at 3:38 AM, Thomas Petazzoni > <thomas.petazzoni@xxxxxxxxxxxxxxxxxx> wrote: [..] > > @@ -701,14 +701,20 @@ static enum dma_status mv_xor_status(struct dma_chan *chan, > > struct mv_xor_chan *mv_chan = to_mv_xor_chan(chan); > > enum dma_status ret; > > > > + spin_lock_bh(&mv_chan->lock); > > + > > ret = dma_cookie_status(chan, cookie, txstate); > > if (ret == DMA_COMPLETE) { > > mv_xor_clean_completed_slots(mv_chan); > > I think you can just delete this call to > mv_xor_clean_completed_slots(). The fact that the descriptors are > complete means that __mv_xor_slot_cleanup ran, and if that is the case > there should be nothing to cleanup. > In that case, we don't need to take the lock anywhere in this function: 1. It's not needed for dma_cookie_status() (as per Andy's comment). 2. It's not needed for mv_xor_slot_cleanup(), which takes the lock. -- Ezequiel García, Free Electrons Embedded Linux, Kernel and Android Engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html