Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1265663

[PATCH V2 6/6] dmaengine: tegra-apb: Free interrupts before killing tasklets

From Jon Hunter <jonathanh@nvidia.com>
Newsgroups linux.kernel
Subject [PATCH V2 6/6] dmaengine: tegra-apb: Free interrupts before killing tasklets
Date 2015-11-09 14:30 +0100
Message-ID <qsUGf-6X1-27@gated-at.bofh.it> (permalink)
References <qsUGe-6X1-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On probe failure or driver removal, before killing any tasklets, ensure
that the channel interrupt is freed to ensure that another channel
interrupt cannot occur and schedule the tasklet again.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
V2 changes:
- Updated patch to use free_irq instead of disable_irq

 drivers/dma/tegra20-apb-dma.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c
index 004edcdb2d2e..d3892a106c1e 100644
--- a/drivers/dma/tegra20-apb-dma.c
+++ b/drivers/dma/tegra20-apb-dma.c
@@ -1396,8 +1396,7 @@ static int tegra_dma_probe(struct platform_device *pdev)
 		}
 		tdc->irq = res->start;
 		snprintf(tdc->name, sizeof(tdc->name), "apbdma.%d", i);
-		ret = devm_request_irq(&pdev->dev, tdc->irq,
-				tegra_dma_isr, 0, tdc->name, tdc);
+		ret = request_irq(tdc->irq, tegra_dma_isr, 0, tdc->name, tdc);
 		if (ret) {
 			dev_err(&pdev->dev,
 				"request_irq failed with err %d channel %d\n",
@@ -1478,6 +1477,8 @@ err_unregister_dma_dev:
 err_irq:
 	while (--i >= 0) {
 		struct tegra_dma_channel *tdc = &tdma->channels[i];
+
+		free_irq(tdc->irq, tdc);
 		tasklet_kill(&tdc->tasklet);
 	}
 
@@ -1497,6 +1498,7 @@ static int tegra_dma_remove(struct platform_device *pdev)
 
 	for (i = 0; i < tdma->chip_data->nr_channels; ++i) {
 		tdc = &tdma->channels[i];
+		free_irq(tdc->irq, tdc);
 		tasklet_kill(&tdc->tasklet);
 	}
 
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH V2 0/6] DMA: tegra-apb: Clean-up Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100
  [PATCH V2 3/6] dmaengine: tegra-apb: Save and restore word count Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100
  [PATCH V2 4/6] dmaengine: tegra-apb: Only save channel state for those in use Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100
    Re: [PATCH V2 4/6] dmaengine: tegra-apb: Only save channel state for  those in use Andy Shevchenko <andy.shevchenko@gmail.com> - 2015-11-09 15:00 +0100
      Re: [PATCH V2 4/6] dmaengine: tegra-apb: Only save channel state for  those in use Jon Hunter <jonathanh@nvidia.com> - 2015-11-10 11:00 +0100
  [PATCH V2 2/6] dmaengine: tegra-apb: Use dev_get_drvdata() Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100
  [PATCH V2 1/6] dmaengine: tegra-apb: Correct runtime-pm usage Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100
    Re: [PATCH V2 1/6] dmaengine: tegra-apb: Correct runtime-pm usage Andy Shevchenko <andy.shevchenko@gmail.com> - 2015-11-09 15:00 +0100
      Re: [PATCH V2 1/6] dmaengine: tegra-apb: Correct runtime-pm usage Jon Hunter <jonathanh@nvidia.com> - 2015-11-10 11:00 +0100
  [PATCH V2 6/6] dmaengine: tegra-apb: Free interrupts before killing tasklets Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100
  [PATCH V2 5/6] dmaengine: tegra-apb: Update driver to use GFP_NOWAIT Jon Hunter <jonathanh@nvidia.com> - 2015-11-09 14:30 +0100

csiph-web