Hello, On Tue, Jul 26, 2016 at 05:25:58PM +0300, Grygorii Strashko wrote: > On 07/26/2016 03:02 PM, Uwe Kleine-König wrote: > > Allocating and preparing a dma descriptor doesn't need to happen under > > the channel's lock. So do this before taking the channel's lock. The only > > down side is that the dma descriptor might be allocated even though the > > channel is about to be stopped. This is unlikely though. > > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > > --- > > drivers/net/ethernet/ti/davinci_cpdma.c | 38 +++++++++++++++++---------------- > > 1 file changed, 20 insertions(+), 18 deletions(-) > > > > diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c > > index 5ffa04a306c6..ba3462707ae3 100644 > > --- a/drivers/net/ethernet/ti/davinci_cpdma.c > > +++ b/drivers/net/ethernet/ti/davinci_cpdma.c > > @@ -542,24 +542,10 @@ int cpdma_chan_submit(struct cpdma_chan *chan, void *token, void *data, > > u32 mode; > > int ret = 0; > > > > - spin_lock_irqsave(&chan->lock, flags); > > - > > - if (chan->state == CPDMA_STATE_TEARDOWN) { > > - ret = -EINVAL; > > - goto unlock_ret; > > - } > > - > > - if (chan->count >= chan->desc_num) { > > - chan->stats.desc_alloc_fail++; > > - ret = -ENOMEM; > > - goto unlock_ret; > > - } > > I'm not sure this is right thing to do. This check is expected to be strict > and means "channel has exhausted the available descriptors, so further descs allocation does not allowed". I developed this patch basing on a 4.4 kernel which doesn't have 742fb20fd4c7 ("net: ethernet: ti: cpdma: switch to use genalloc"). There my patch is more obviously correct. As currently chan->count is protected by chan->lock we must hold the lock for this check. If a failing check means we must not call cpdma_desc_alloc in the first place, that's bad. But I'm not sure this is the case here. After all cpdma_desc_alloc doesn't do anything relevant for the hardware, right? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | -- 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