Messages in this thread |  | | | Date | Wed, 7 Dec 2011 08:34:46 +1100 | | From | NeilBrown <> | | Subject | Re: [PATCH] Driver core: leave runtime PM enabled during system shutdown |
| |
On Tue, 6 Dec 2011 10:26:14 -0500 (EST) Alan Stern <stern@rowland.harvard.edu> wrote:
> Disabling all runtime PM during system shutdown turns out not to be a > good idea, because some devices may need to be woken up from a > low-power state at that time. > > The whole point of disabling runtime PM for system shutdown was to > prevent untimely runtime-suspend method calls. This patch (as1504) > accomplishes the same result by incrementing the usage count for each > device and waiting for ongoing runtime-PM callbacks to finish. This > is what we already do during system suspend and hibernation, which > makes sense since the shutdown method is pretty much a legacy analog > of the pm->poweroff method. > > This fixes a regression on some OMAP systems. > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu> > Reported-by: NeilBrown <neilb@suse.de> > CC: Chen Peter-B29397 <B29397@freescale.com> > > --- > > drivers/base/core.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > Index: usb-3.2/drivers/base/core.c > =================================================================== > --- usb-3.2.orig/drivers/base/core.c > +++ usb-3.2/drivers/base/core.c > @@ -1743,8 +1743,10 @@ void device_shutdown(void) > */ > list_del_init(&dev->kobj.entry); > spin_unlock(&devices_kset->list_lock); > - /* Disable all device's runtime power management */ > - pm_runtime_disable(dev); > + > + /* Don't allow any more runtime suspends */ > + pm_runtime_get_noresume(dev); > + pm_runtime_barrier(dev); > > if (dev->bus && dev->bus->shutdown) { > dev_dbg(dev, "shutdown\n");
Thanks a lot. I can confirm that this definitely fixes my problem. Tested-by: NeilBrown <neilb@suse.de>
Thanks for your help!
NeilBrown [unhandled content-type:application/pgp-signature] |  |