From: NeilBrown <neilb@suse.de>
To: Chen Peter-B29397 <B29397@freescale.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>, Greg KH <greg@kroah.com>,
"gregkh@suse.de" <gregkh@suse.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"stern@rowland.harvard.edu" <stern@rowland.harvard.edu>,
"hzpeterchen@gmail.com" <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 16:09:25 +1100 [thread overview]
Message-ID: <20111205160925.753d7e22@notabene.brown> (raw)
In-Reply-To: <35AB98346D25394A9354ED89C4D76587228E65@039-SN1MPN1-002.039d.mgd.msft.net>
[-- Attachment #1: Type: text/plain, Size: 2588 bytes --]
On Mon, 5 Dec 2011 03:29:24 +0000 Chen Peter-B29397 <B29397@freescale.com>
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.
> > 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?
> >
> Oh, I am sorry to cause your problem. I think it may not be easy to handle this
> kinds of problem well.
>
> In my opinion, it is better to handle shutdown/suspend SYNC at device drivers.
> Since the pm core is hard to know driver's shutdown is finished, and vice versa.
>
> 1. Driver needs to has relationship between suspend/shutdown, like usb host,
> hcd needs to know downstream port's suspend, and usb core needs to know hcd's shutdown.
>
> 2. At driver's shutdown
> static void xxx_driver_shutdown(struct platform_device *pdev)
> {
> if (supports_autosuspend(&pdev->dev) {
> pm_runtime_cancel_pending(&pdev->dev);
> wait_xxx_driver_suspend(pdev); /* need to sync with driver's suspend */
> }
> real_shutdown();
> }
>
I think that makes sense to me.
It might be reasonable to call pm_runtime_barrier() in device_shutdown() to
make it a bit easier for the ->shutdown function, but the final
synchronisation should probably happen right there where you suggest.
It seems that driver->shutdown() is called from other places than just
device_shutdown(). If a ->driver_shutdown function was allowed to assume that
pm_runtime has been disabled, all of those call points would need to disable
pm_runtime, which doesn't seem like the right way to go.
Thanks,
NeilBrown
Thanks,
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
prev parent reply other threads:[~2011-12-05 5:09 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 ` [PATCH 1/1] driver core: disable device's runtime pm during shutdown NeilBrown
2011-12-05 5:53 ` 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 [this message]
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=20111205160925.753d7e22@notabene.brown \
--to=neilb@suse.de \
--cc=B29397@freescale.com \
--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=rjw@sisk.pl \
--cc=stern@rowland.harvard.edu \
/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.