Re: [PATCH v11 2/4] PM / Domains: add setter for dev.pm_domain

From: Rafael J. Wysocki
Date: Thu Jan 07 2016 - 18:49:29 EST


On Thursday, January 07, 2016 03:47:01 PM Tomeu Vizoso wrote:
> On 10 November 2015 at 10:33, Daniel Kurtz <djkurtz@xxxxxxxxxxxx> wrote:
> [snip]
> >
> > The problem appears to be that:
> > * On boot, platform_drv_probe() calls dev_pm_domain_attach() before
> > drv->probe(); thus, it calls dev_pm_domain_attach() while the device
> > is unbound.
> >
> > * However, for a platform_device, the reboot path calls
> > device_shutdown(), but not __device_release_driver():
> > device_shutdown()
> > dev->driver->shutdown => platform_drv_shutdown()
> > dev_pm_domain_detach()
> > dev->pm_domain->detach() => genpd_dev_pm_detach()
> > pm_genpd_remove_device()
> > dev_pm_domain_set(dev, NULL);
> >
> > So, for a platform_device in a genpd power domain with .shutdown
> > installed, platform_drv_shutdown() calls dev_pm_domain_detach() while
> > the device is still bound, which triggers the WARN().
>
> Hi Rafael, Alan and Ulf,
>
> do you have any suggestion about this? I don't really understand why
> the device is detached from the domain on shutdown.

Well, this looks like a bug to me.

Thanks,
Rafael