On Tue, May 05, 2015 at 10:06:08PM +0800, Jun Nie wrote: > +static int zx_dma_remove(struct platform_device *op) > +{ > + struct zx_dma_chan *c, *cn; > + struct zx_dma_dev *d = platform_get_drvdata(op); > + > + dma_async_device_unregister(&d->slave); > + of_dma_controller_free((&op->dev)->of_node); > + > + list_for_each_entry_safe(c, cn, &d->slave.channels, > + vc.chan.device_node) { > + list_del(&c->vc.chan.device_node); > + } > + clk_disable_unprepare(d->clk); > + dmam_pool_destroy(d->pool); I don't see irq freed, here you can have tasklets executing and also able to receive irq even when devices is getting freed -- ~Vinod -- 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