dmaengine: at_hdmac: Drop locking in at_hdmac_alloc_chan_resources()
authorTudor Ambarus <tudor.ambarus@microchip.com>
Thu, 23 Jan 2020 14:03:04 +0000 (14:03 +0000)
committerVinod Koul <vkoul@kernel.org>
Tue, 25 Feb 2020 05:57:27 +0000 (11:27 +0530)
There is no need for locking in device_alloc_chan_resources(),
the DMA core takes care of it by using a dma_list_mutex around
the DMA devices.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
Link: https://lore.kernel.org/r/20200123140237.125799-2-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/at_hdmac.c

index cad6dcd9cfb5d336c7a66a5025952312e0b0baa1..301bae45cf8d0dbc9372868e7e43d96e4453ffcc 100644 (file)
@@ -1542,10 +1542,8 @@ static int atc_alloc_chan_resources(struct dma_chan *chan)
        struct at_dma           *atdma = to_at_dma(chan->device);
        struct at_desc          *desc;
        struct at_dma_slave     *atslave;
-       unsigned long           flags;
        int                     i;
        u32                     cfg;
-       LIST_HEAD(tmp_list);
 
        dev_vdbg(chan2dev(chan), "alloc_chan_resources\n");
 
@@ -1583,14 +1581,11 @@ static int atc_alloc_chan_resources(struct dma_chan *chan)
                                "Only %d initial descriptors\n", i);
                        break;
                }
-               list_add_tail(&desc->desc_node, &tmp_list);
+               list_add_tail(&desc->desc_node, &atchan->free_list);
        }
 
-       spin_lock_irqsave(&atchan->lock, flags);
        atchan->descs_allocated = i;
-       list_splice(&tmp_list, &atchan->free_list);
        dma_cookie_init(chan);
-       spin_unlock_irqrestore(&atchan->lock, flags);
 
        /* channel parameters */
        channel_writel(atchan, CFG, cfg);