[PATCH 1/3] dma: mv_xor: take channel spinlock in mv_xor_status()
Ezequiel Garcia
ezequiel.garcia at free-electrons.com
Fri Mar 7 10:51:09 EST 2014
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 at free-electrons.com> 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
More information about the linux-arm-kernel
mailing list