Hi Daniel, On Wed, Oct 30, 2013 at 4:21 PM, Daniel Mack <zonque@xxxxxxxxx> wrote: [...] > + > +static SIMPLE_DEV_PM_OPS(edma_pm_ops, edma_pm_suspend, edma_pm_resume); > + > static struct platform_driver edma_driver = { > .driver = { > .name = "edma", > + .pm = &edma_pm_ops, > .of_match_table = edma_of_ids, > }, A while back we discovered a nasty race condition here that had us move the EDMA PM callbacks to the noirq phase. IIRC the MMC driver was resuming before the EDMA driver had a chance to run and that was leading to a deadlock. I am not sure how to force this scenario but i do remember spending time debugging this on a random codebase. Maybe some else has some better ideas on how to force this race condition... I think logically it makes sense to have the DMA controllers in any system resume before any of the client drivers. Maybe a set of syscore_ops similar to the timekeeping stuff needs to be added (in the dmaengine framework?) to get this right. Regards, Vaibhav -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html