From: NeilBrown <neilb@suse.de>
To: Ming Lei <tom.leiming@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>, Greg KH <greg@kroah.com>,
Peter Chen <peter.chen@freescale.com>,
gregkh@suse.de, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org, stern@rowland.harvard.edu,
hzpeterchen@gmail.com, Igor Grinberg <grinberg@compulab.co.il>
Subject: Re: [PATCH 1/1] driver core: disable device's runtime pm during shutdown
Date: Mon, 5 Dec 2011 15:53:38 +1100 [thread overview]
Message-ID: <20111205155338.1bd658b9@notabene.brown> (raw)
In-Reply-To: <CACVXFVNkapRDJ8QkgmJCh+n1c2+7cHBiLf1ef22Nfdd8YrPpGg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2561 bytes --]
On Mon, 5 Dec 2011 11:26:40 +0800 Ming Lei <tom.leiming@gmail.com> wrote:
> Hi,
>
> On Mon, Dec 5, 2011 at 5:56 AM, NeilBrown <neilb@suse.de> wrote:
> >
> > Hi,
> > this patches causes a problem for me.
> >
> > Specifically it makes it impossible to power-down a device which uses twl4030
> > for power control on an omap3 processor.
> >
> > To perform the shutdown we need to send a command over the i2c bus.
> > The relevant bus is called omap_i2c.1 and this is normally in suspend mode.
> > When a request is sent, omap_i2c_xfer uses pm_runtime_get_sync to wake it up,
> > performs the transfer, then calls pm_runtime_put to let it go back to sleep.
> >
> > So it is asleep when the new pm_runtime_disable() call is made, so it stays
> > asleep, omap_i2c_xfer cannot wake it, the transfer doesn't happen and the
> > system doesn't get powered off.
> >
> > So here is a device that should *not* have pm disabled at shutdown.
> >
> > So I feel this fix is a little too heavy-handed.
>
> Maybe the device's runtime PM should not be disabled if
> there is no ->shutdown defined in its driver, how about the blew?
Thanks, but that won't actually help.
dev->bus->shutdown is i2c_device_shutdown so there is a shutdown method.
However i2c_device_shutdown just finds the driver can calls
driver->shutdown(), and that is the 'shutdown' that is NULL.
Thanks,
NeilBrown
>
> diff --git a/drivers/base/core.c b/drivers/base/core.c
> index d8b3d89..ca30659 100644
> --- a/drivers/base/core.c
> +++ b/drivers/base/core.c
> @@ -1743,14 +1743,16 @@ 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);
>
> + /* Disable the device's runtime power management if
> + * it is to be shutdown*/
> if (dev->bus && dev->bus->shutdown) {
> dev_dbg(dev, "shutdown\n");
> + pm_runtime_disable(dev);
> dev->bus->shutdown(dev);
> } else if (dev->driver && dev->driver->shutdown) {
> dev_dbg(dev, "shutdown\n");
> + pm_runtime_disable(dev);
> dev->driver->shutdown(dev);
> }
> put_device(dev);
>
>
> > I don't fully understand the problem scenario described above but it seems to
> > me that if the auto-suspend timer can fire after the hardware has been shut
> > down, then maybe the hardware-shutdown should be disabling that timer. Maybe?
> >
> > Suggestions?
> >
> > Thanks,
> > NeilBrown
>
>
> thanks,
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
next prev parent reply other threads:[~2011-12-05 4:53 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-14 0:43 [PATCH 1/1] driver core: disable device's runtime pm during shutdown Peter Chen
2011-11-14 9:54 ` Ming Lei
2011-11-14 22:28 ` Rafael J. Wysocki
2011-11-14 22:27 ` Rafael J. Wysocki
2011-11-15 0:59 ` Greg KH
2011-11-15 23:16 ` Rafael J. Wysocki
2011-12-04 21:56 ` NeilBrown
2011-12-05 2:42 ` Alan Stern
2011-12-05 3:37 ` NeilBrown
2011-12-05 3:26 ` Ming Lei
2011-12-05 4:42 ` Chen Peter-B29397
2011-12-05 5:12 ` Ming Lei
2011-12-05 9:01 ` Ming Lei
2011-12-05 9:05 ` Ming Lei
2011-12-05 16:02 ` Alan Stern
2011-12-05 18:35 ` NeilBrown
2011-12-05 20:55 ` Alan Stern
2011-12-05 22:32 ` Rafael J. Wysocki
2011-12-06 15:26 ` [PATCH] Driver core: leave runtime PM enabled during system shutdown Alan Stern
2011-12-06 21:34 ` NeilBrown
2011-12-06 21:48 ` Greg KH
2011-12-06 22:05 ` Rafael J. Wysocki
2011-12-06 22:03 ` Rafael J. Wysocki
2011-12-05 4:53 ` NeilBrown [this message]
2011-12-05 5:53 ` [PATCH 1/1] driver core: disable device's runtime pm during shutdown Chen Peter-B29397
2011-12-05 8:08 ` NeilBrown
2011-12-05 8:32 ` Chen Peter-B29397
2011-12-05 8:52 ` NeilBrown
2011-12-05 3:29 ` Chen Peter-B29397
2011-12-05 5:09 ` NeilBrown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111205155338.1bd658b9@notabene.brown \
--to=neilb@suse.de \
--cc=greg@kroah.com \
--cc=gregkh@suse.de \
--cc=grinberg@compulab.co.il \
--cc=hzpeterchen@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=peter.chen@freescale.com \
--cc=rjw@sisk.pl \
--cc=stern@rowland.harvard.edu \
--cc=tom.leiming@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.