On Thursday, January 07, 2016 03:47:01 PM Tomeu Vizoso wrote:
On 10 November 2015 at 10:33, Daniel Kurtz djkurtz@chromium.org 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