[PATCH v2 55/64] dmaengine: dma-axi-dmac: use dma_chan_kill_bh
Allen Pais <[email protected]> Mon, 27 Jul 2026 13:39:17 -0700
| Newsgroups | org.kernel.vger.dmaengine,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <8b42f611df2e037246dbf58d21f3d3bfffe17de1.1785183549.git.allen.lkml@gmail.com> |
virt-dma now dispatches completion callbacks through per-channel BH work instead of its tasklet. Cancel that work during teardown before channel storage is released. Signed-off-by: Allen Pais <[email protected]> --- drivers/dma/dma-axi-dmac.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/dma/dma-axi-dmac.c b/drivers/dma/dma-axi-dmac.c index d47ff27e1408..d26bfa852806 100644 --- a/drivers/dma/dma-axi-dmac.c +++ b/drivers/dma/dma-axi-dmac.c @@ -1195,9 +1195,11 @@ static int axi_dmac_detect_caps(struct axi_dmac *dmac, unsigned int version) return 0; } -static void axi_dmac_tasklet_kill(void *task) +static void axi_dmac_kill_bh(void *data) { - tasklet_kill(task); + struct dma_chan *chan = data; + + dma_chan_kill_bh(chan); } static void axi_dmac_free_dma_controller(void *of_node) @@ -1302,8 +1304,8 @@ static int axi_dmac_probe(struct platform_device *pdev) * Put the action in here so it get's done before unregistering the DMA * device. */ - ret = devm_add_action_or_reset(&pdev->dev, axi_dmac_tasklet_kill, - &dmac->chan.vchan.task); + ret = devm_add_action_or_reset(&pdev->dev, axi_dmac_kill_bh, + &dmac->chan.vchan.chan); if (ret) return ret; -- 2.43.0