[PATCH v4] ARM: omap: edma: add suspend suspend/resume hooks
Vaibhav Bedia
vaibhav.bedia at gmail.com
Thu Oct 31 18:25:22 EDT 2013
Hi Daniel,
On Wed, Oct 30, 2013 at 4:21 PM, Daniel Mack <zonque at gmail.com> 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
More information about the linux-arm-kernel
mailing list