Hi Vaibhav, On 10/31/2013 05:25 PM, Vaibhav Bedia wrote: > 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 you're talking about the patch at [1] which is not upstream. A quick question with my limited knowledge of suspend/resume- How can there be pending I/O operations between suspend/resume cycles? The sync is done before suspend, so I don't understand how one is receiving a response from the card after resume before EDMA can resume? I'd imagine that until all devices are resumed, there will be no I/O operation issued. Let me know your thoughts. thanks, -Joel [1] https://www.gitorious.org/x0148406-public/linux-kernel/commit/b81bf04091986fa3893f31955564594567be3b61 -- 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