On 25-11-21, 11:00, Tudor Ambarus wrote: > So that we don't use the same desc over and over again. Please use full para in the changelog and not a continuation of the patch title! and why is wrong with using same desc over and over? Any benefits of not doing so? > > Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> > --- > drivers/dma/at_xdmac.c | 23 ++++++++++++++--------- > 1 file changed, 14 insertions(+), 9 deletions(-) > > diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c > index 2cc9af222681..8804a86a9bcc 100644 > --- a/drivers/dma/at_xdmac.c > +++ b/drivers/dma/at_xdmac.c > @@ -729,7 +729,8 @@ at_xdmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, > if (!desc) { > dev_err(chan2dev(chan), "can't get descriptor\n"); > if (first) > - list_splice_init(&first->descs_list, &atchan->free_descs_list); > + list_splice_tail_init(&first->descs_list, > + &atchan->free_descs_list); > goto spin_unlock; > } > > @@ -817,7 +818,8 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, > if (!desc) { > dev_err(chan2dev(chan), "can't get descriptor\n"); > if (first) > - list_splice_init(&first->descs_list, &atchan->free_descs_list); > + list_splice_tail_init(&first->descs_list, > + &atchan->free_descs_list); > spin_unlock_irqrestore(&atchan->lock, irqflags); > return NULL; > } > @@ -1051,8 +1053,8 @@ at_xdmac_prep_interleaved(struct dma_chan *chan, > src_addr, dst_addr, > xt, chunk); > if (!desc) { > - list_splice_init(&first->descs_list, > - &atchan->free_descs_list); > + list_splice_tail_init(&first->descs_list, > + &atchan->free_descs_list); > return NULL; > } > > @@ -1132,7 +1134,8 @@ at_xdmac_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, > if (!desc) { > dev_err(chan2dev(chan), "can't get descriptor\n"); > if (first) > - list_splice_init(&first->descs_list, &atchan->free_descs_list); > + list_splice_tail_init(&first->descs_list, > + &atchan->free_descs_list); > return NULL; > } > > @@ -1308,8 +1311,8 @@ at_xdmac_prep_dma_memset_sg(struct dma_chan *chan, struct scatterlist *sgl, > sg_dma_len(sg), > value); > if (!desc && first) > - list_splice_init(&first->descs_list, > - &atchan->free_descs_list); > + list_splice_tail_init(&first->descs_list, > + &atchan->free_descs_list); > > if (!first) > first = desc; > @@ -1701,7 +1704,8 @@ static void at_xdmac_tasklet(struct tasklet_struct *t) > > spin_lock_irq(&atchan->lock); > /* Move the xfer descriptors into the free descriptors list. */ > - list_splice_init(&desc->descs_list, &atchan->free_descs_list); > + list_splice_tail_init(&desc->descs_list, > + &atchan->free_descs_list); > at_xdmac_advance_work(atchan); > spin_unlock_irq(&atchan->lock); > } > @@ -1850,7 +1854,8 @@ static int at_xdmac_device_terminate_all(struct dma_chan *chan) > /* Cancel all pending transfers. */ > list_for_each_entry_safe(desc, _desc, &atchan->xfers_list, xfer_node) { > list_del(&desc->xfer_node); > - list_splice_init(&desc->descs_list, &atchan->free_descs_list); > + list_splice_tail_init(&desc->descs_list, > + &atchan->free_descs_list); > } > > clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); > -- > 2.25.1 -- ~Vinod