Re: [PATCH 11/32] dmaengine: imx-dma: explicitly freeup irq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jul 06, 2016 at 10:37:22PM +0530, Vinod Koul wrote:
> On Wed, Jul 06, 2016 at 11:02:06AM +0200, Sascha Hauer wrote:
> > >  static int imxdma_remove(struct platform_device *pdev)
> > >  {
> > >  	struct imxdma_engine *imxdma = platform_get_drvdata(pdev);
> > >  
> > > +	imxdma_free_irq(pdev, imxdma);
> > > +
> > 
> > I don't think this is a good idea for various reasons.
> > 
> > When it's not safe to rely on the interrupt being released by devm later
> > then shouldn't we explicitly release the interrupt in the probe error
> > path aswell? Then if we don't let devm release the irq what's the point
> > in using devm_request_irq at all?
> 
> IMHO devm_request_irq was not really a good idea, it helps, but is very
> easy to get it wrong, which seems to be the usual case.
> 
> > Also what's the case in which we have to explicitly release the irq? The
> > imx-dma driver explicitly disables the interrupts for deactivated
> > channels and I assume that when the drivers remove() function is called
> > every channel *is* deactivated. If it's not then we are in big trouble
> > since then we must assume that also a DMA transfer might be ongoing which
> > will surely lead to trouble when the driver is removed.
> 
> DMA transfer cannot be running at that time. That is not the point.
> 
> Sure you may have set the controller to not fire again, but does it
> really protect you against spurious interrupts.
> 
> The point is that, there is no guarantee, so we are better off freeing
> up explicitly so that it doesn't fire when remove is completed. Same is
> true for tasklets.
> 
> Btw I would have been okay if the driver disabled irq in remove, few of
> them do that and I haven't tinkered those..

Wouldn't it then be better to use disable_irq() instead of releasing it?
This would make the intention clearer.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux