From: "Rafael J. Wysocki" <rjw-KKrjLPT3xs0@public.gmane.org>
To: Alan Stern <stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org>
Cc: Ohad Ben-Cohen <ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>,
linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
Johannes Berg <johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org>,
linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Ido Yariv <ido-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>,
Kevin Hilman
<khilman-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
Subject: Re: [linux-pm] subtle pm_runtime_put_sync race and sdio functions
Date: Wed, 22 Dec 2010 13:29:40 +0100 [thread overview]
Message-ID: <201012221329.40251.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1012212032590.11252-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
On Wednesday, December 22, 2010, Alan Stern wrote:
> On Tue, 21 Dec 2010, Rafael J. Wysocki wrote:
>
> > It basically goes like this. There's device A that is only resumed when it's
> > needed to carry out an operation and is suspended immediately after that.
> > There's another device B that needs A to do something during its suspend.
> > So, when the suspend of B is started, A is woken up, does its work and is
> > suspended again (using pm_runtime_suspend()). Then B is suspended.
> >
> > We currently require that ->suspend() and ->resume() callbacks be defined
> > for A (presumably pointing to the same code as its runtime callbacks) so that
> > things work correctly, but perhaps we can just relax this requirement a bit?
> > I'm not 100% sure that's a good idea, just considering it.
>
> I still don't know. It would require a lot of special conditions: no
> child devices, not runtime-PM-disabled, not runtime-PM-forbidden...
> Also, A's parent would have to be coded carefully; otherwise A's
> runtime resume would prevent the parent from suspending.
>
> This just doesn't fit very well with the runtime PM model, or at least,
> not in the form you described.
>
> Consider this instead: Since A is required to be functional before B
> can be used, A must be registered before B and hence B gets suspended
> before A. Therefore during the prepare phase we can runtime-resume A
> and leave it powered up; when B needs to suspend, it won't matter that
> the runtime-PM calls are ineffective.
We don't really need to do that, because the runtime resume _is_ functional
during system suspend. The only thing missing is a ->suspend() callback for A
(and a corresponding ->resume() callback to make sure A will be available to
B during system resume).
> Then when A's dpm_suspend occurs, it can safely go to a low-power state and
> stay there.
Agreed.
Thanks,
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: "Ohad Ben-Cohen" <ohad@wizery.com>,
linux-pm@lists.linux-foundation.org,
Johannes Berg <johannes@sipsolutions.net>,
linux-wireless@vger.kernel.org, linux-mmc@vger.kernel.org,
Ido Yariv <ido@wizery.com>,
Kevin Hilman <khilman@deeprootsystems.com>
Subject: Re: [linux-pm] subtle pm_runtime_put_sync race and sdio functions
Date: Wed, 22 Dec 2010 13:29:40 +0100 [thread overview]
Message-ID: <201012221329.40251.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1012212032590.11252-100000@netrider.rowland.org>
On Wednesday, December 22, 2010, Alan Stern wrote:
> On Tue, 21 Dec 2010, Rafael J. Wysocki wrote:
>
> > It basically goes like this. There's device A that is only resumed when it's
> > needed to carry out an operation and is suspended immediately after that.
> > There's another device B that needs A to do something during its suspend.
> > So, when the suspend of B is started, A is woken up, does its work and is
> > suspended again (using pm_runtime_suspend()). Then B is suspended.
> >
> > We currently require that ->suspend() and ->resume() callbacks be defined
> > for A (presumably pointing to the same code as its runtime callbacks) so that
> > things work correctly, but perhaps we can just relax this requirement a bit?
> > I'm not 100% sure that's a good idea, just considering it.
>
> I still don't know. It would require a lot of special conditions: no
> child devices, not runtime-PM-disabled, not runtime-PM-forbidden...
> Also, A's parent would have to be coded carefully; otherwise A's
> runtime resume would prevent the parent from suspending.
>
> This just doesn't fit very well with the runtime PM model, or at least,
> not in the form you described.
>
> Consider this instead: Since A is required to be functional before B
> can be used, A must be registered before B and hence B gets suspended
> before A. Therefore during the prepare phase we can runtime-resume A
> and leave it powered up; when B needs to suspend, it won't matter that
> the runtime-PM calls are ineffective.
We don't really need to do that, because the runtime resume _is_ functional
during system suspend. The only thing missing is a ->suspend() callback for A
(and a corresponding ->resume() callback to make sure A will be available to
B during system resume).
> Then when A's dpm_suspend occurs, it can safely go to a low-power state and
> stay there.
Agreed.
Thanks,
Rafael
next prev parent reply other threads:[~2010-12-22 12:29 UTC|newest]
Thread overview: 179+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-09 23:37 subtle pm_runtime_put_sync race and sdio functions Ohad Ben-Cohen
2010-12-10 0:00 ` Rafael J. Wysocki
2010-12-10 0:00 ` [linux-pm] " Rafael J. Wysocki
2010-12-10 17:24 ` Alan Stern
2010-12-10 22:01 ` Rafael J. Wysocki
2010-12-10 23:02 ` Ohad Ben-Cohen
2010-12-10 23:02 ` Ohad Ben-Cohen
2010-12-10 22:01 ` Rafael J. Wysocki
2010-12-10 22:59 ` Ohad Ben-Cohen
2010-12-10 22:59 ` [linux-pm] " Ohad Ben-Cohen
2010-12-11 1:17 ` Ohad Ben-Cohen
2010-12-11 14:53 ` Alan Stern
2010-12-11 1:17 ` Ohad Ben-Cohen
2010-12-11 14:50 ` Alan Stern
2010-12-18 13:29 ` Ohad Ben-Cohen
2010-12-18 13:29 ` [linux-pm] " Ohad Ben-Cohen
2010-12-18 14:16 ` David Vrabel
2010-12-18 15:12 ` Ohad Ben-Cohen
2010-12-18 15:12 ` Ohad Ben-Cohen
2010-12-18 14:16 ` David Vrabel
2010-12-18 15:07 ` [linux-pm] " Rafael J. Wysocki
2010-12-18 16:00 ` Ohad Ben-Cohen
2010-12-18 16:00 ` [linux-pm] " Ohad Ben-Cohen
2010-12-18 16:40 ` Johannes Berg
[not found] ` <1292690407.3653.2.camel-8upI4CBIZJIJvtFkdXX2HixXY32XiHfO@public.gmane.org>
2010-12-18 19:08 ` Ohad Ben-Cohen
2010-12-18 19:08 ` Ohad Ben-Cohen
2010-12-18 21:30 ` Alan Stern
2010-12-18 21:30 ` [linux-pm] " Alan Stern
2010-12-18 21:30 ` Alan Stern
2010-12-18 22:57 ` Rafael J. Wysocki
2010-12-18 22:57 ` [linux-pm] " Rafael J. Wysocki
2010-12-18 22:52 ` Rafael J. Wysocki
2010-12-18 22:52 ` [linux-pm] " Rafael J. Wysocki
2010-12-18 19:08 ` Ohad Ben-Cohen
2010-12-18 21:29 ` Alan Stern
2010-12-18 21:29 ` [linux-pm] " Alan Stern
2010-12-18 21:29 ` Alan Stern
2010-12-18 22:50 ` Rafael J. Wysocki
2010-12-18 22:50 ` Rafael J. Wysocki
2010-12-18 16:40 ` Johannes Berg
[not found] ` <AANLkTin23vbbA7+UDzh=v060HbkLMrJjB38cs+AWScPJ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-18 22:47 ` [linux-pm] " Rafael J. Wysocki
2010-12-18 22:47 ` Rafael J. Wysocki
[not found] ` <201012182347.08635.rjw-KKrjLPT3xs0@public.gmane.org>
2010-12-19 7:48 ` Ohad Ben-Cohen
2010-12-19 7:48 ` Ohad Ben-Cohen
2010-12-19 7:48 ` Ohad Ben-Cohen
2010-12-19 10:22 ` [linux-pm] " Rafael J. Wysocki
2010-12-20 3:37 ` Alan Stern
2010-12-20 3:37 ` Alan Stern
2010-12-20 21:17 ` Rafael J. Wysocki
2010-12-20 21:17 ` [linux-pm] " Rafael J. Wysocki
[not found] ` <201012202217.09374.rjw-KKrjLPT3xs0@public.gmane.org>
2010-12-21 0:57 ` Alan Stern
2010-12-21 0:57 ` Alan Stern
2010-12-21 21:31 ` Rafael J. Wysocki
2010-12-21 21:31 ` [linux-pm] " Rafael J. Wysocki
2010-12-22 1:42 ` Alan Stern
[not found] ` <201012212231.57420.rjw-KKrjLPT3xs0@public.gmane.org>
2010-12-22 1:42 ` [linux-pm] " Alan Stern
2010-12-22 1:42 ` Alan Stern
2010-12-22 12:29 ` Rafael J. Wysocki
[not found] ` <Pine.LNX.4.44L0.1012212032590.11252-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2010-12-22 12:29 ` Rafael J. Wysocki [this message]
2010-12-22 12:29 ` [linux-pm] " Rafael J. Wysocki
2011-01-26 23:28 ` Kevin Hilman
2011-01-26 23:28 ` [linux-pm] " Kevin Hilman
2011-01-27 18:13 ` Alan Stern
2011-01-27 18:13 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1101271158530.2090-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2011-01-27 19:22 ` Kevin Hilman
2011-01-27 19:22 ` Kevin Hilman
2011-01-27 19:49 ` Alan Stern
2011-01-27 19:49 ` [linux-pm] " Alan Stern
2011-01-27 19:49 ` Alan Stern
2011-01-27 20:15 ` Kevin Hilman
[not found] ` <Pine.LNX.4.44L0.1101271439020.2090-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2011-01-27 20:15 ` [linux-pm] " Kevin Hilman
2011-01-27 20:15 ` Kevin Hilman
[not found] ` <87tyguje7j.fsf-l0cyMroinI0@public.gmane.org>
2011-01-27 22:18 ` Vitaly Wool
2011-01-27 22:18 ` Vitaly Wool
2011-01-27 22:18 ` Vitaly Wool
2011-01-27 23:21 ` Rafael J. Wysocki
2011-01-27 23:21 ` [linux-pm] " Rafael J. Wysocki
2011-01-27 23:49 ` Kevin Hilman
2011-01-27 23:49 ` [linux-pm] " Kevin Hilman
2011-01-27 19:22 ` Kevin Hilman
2011-01-27 23:11 ` [linux-pm] " Rafael J. Wysocki
2011-01-27 23:11 ` Rafael J. Wysocki
2011-01-27 18:13 ` Alan Stern
[not found] ` <87k4hrtfcb.fsf-l0cyMroinI0@public.gmane.org>
2011-01-27 18:20 ` [linux-pm] " Vitaly Wool
2011-01-27 18:20 ` Vitaly Wool
2011-01-27 18:54 ` Kevin Hilman
2011-01-27 18:54 ` Kevin Hilman
2011-01-27 18:20 ` Vitaly Wool
2010-12-21 0:57 ` Alan Stern
2010-12-20 3:37 ` Alan Stern
2010-12-21 22:23 ` [linux-pm] " Kevin Hilman
2010-12-22 1:48 ` Alan Stern
2010-12-22 1:48 ` Alan Stern
2010-12-22 1:48 ` Alan Stern
2010-12-21 22:23 ` Kevin Hilman
2010-12-23 7:51 ` [linux-pm] " Ohad Ben-Cohen
2010-12-23 16:03 ` Alan Stern
2010-12-23 16:03 ` [linux-pm] " Alan Stern
2010-12-23 16:03 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1012231055440.5617-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2010-12-25 7:34 ` Ohad Ben-Cohen
2010-12-25 7:34 ` Ohad Ben-Cohen
[not found] ` <AANLkTi=aHU57xDq+-DWrN2sJsAwx_9bZ_ofy1rOmp0VH-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-25 16:21 ` Alan Stern
2010-12-25 16:21 ` Alan Stern
2010-12-25 20:58 ` Ohad Ben-Cohen
[not found] ` <Pine.LNX.4.44L0.1012251046060.5079-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2010-12-25 20:58 ` [linux-pm] " Ohad Ben-Cohen
2010-12-25 20:58 ` Ohad Ben-Cohen
2010-12-25 21:50 ` Vitaly Wool
2010-12-26 5:27 ` Ohad Ben-Cohen
2010-12-26 5:27 ` Ohad Ben-Cohen
2010-12-25 21:50 ` Vitaly Wool
2010-12-25 21:54 ` Vitaly Wool
[not found] ` <AANLkTimj0E3Rz_8WQrU4wGg3ONyXzkUT9+U3Xqz7Cq0X-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-25 21:54 ` [linux-pm] " Vitaly Wool
2010-12-25 21:54 ` Vitaly Wool
2010-12-26 2:48 ` Alan Stern
2010-12-26 2:48 ` Alan Stern
2010-12-26 5:55 ` Ohad Ben-Cohen
[not found] ` <Pine.LNX.4.44L0.1012252041260.10725-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2010-12-26 5:55 ` [linux-pm] " Ohad Ben-Cohen
2010-12-26 5:55 ` Ohad Ben-Cohen
2010-12-26 11:45 ` Rafael J. Wysocki
2010-12-26 12:43 ` Ohad Ben-Cohen
[not found] ` <201012261245.29680.rjw-KKrjLPT3xs0@public.gmane.org>
2010-12-26 12:43 ` [linux-pm] " Ohad Ben-Cohen
2010-12-26 12:43 ` Ohad Ben-Cohen
2010-12-26 18:35 ` Rafael J. Wysocki
2010-12-26 18:35 ` [linux-pm] " Rafael J. Wysocki
2010-12-28 19:11 ` Ohad Ben-Cohen
2010-12-28 19:11 ` [linux-pm] " Ohad Ben-Cohen
[not found] ` <AANLkTimHHN+GesyhR6Jjnm771XLhn=inn=vrSk=mT6Mh-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-28 19:21 ` Rafael J. Wysocki
2010-12-28 19:21 ` Rafael J. Wysocki
2010-12-28 19:34 ` Ohad Ben-Cohen
2010-12-28 20:36 ` Rafael J. Wysocki
2010-12-28 20:36 ` [linux-pm] " Rafael J. Wysocki
2010-12-28 19:34 ` Ohad Ben-Cohen
2010-12-28 19:21 ` Rafael J. Wysocki
2010-12-26 14:53 ` Ohad Ben-Cohen
2010-12-26 14:53 ` [linux-pm] " Ohad Ben-Cohen
2010-12-26 18:37 ` Rafael J. Wysocki
2010-12-28 19:15 ` Ohad Ben-Cohen
2010-12-28 19:15 ` [linux-pm] " Ohad Ben-Cohen
2010-12-28 20:04 ` Rafael J. Wysocki
[not found] ` <AANLkTinewad6YxXvn5gnJQ+HJn41Sg96319GQn9KRKWj-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-28 20:04 ` [linux-pm] " Rafael J. Wysocki
2010-12-28 20:04 ` Rafael J. Wysocki
2010-12-28 20:41 ` Ohad Ben-Cohen
[not found] ` <201012282104.06232.rjw-KKrjLPT3xs0@public.gmane.org>
2010-12-28 20:41 ` [linux-pm] " Ohad Ben-Cohen
2010-12-28 20:41 ` Ohad Ben-Cohen
2010-12-26 18:37 ` Rafael J. Wysocki
2010-12-26 11:45 ` Rafael J. Wysocki
[not found] ` <AANLkTinyKfwcZLD5D4rdF6OpQqr79F==GRjAMBjjbupW-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-26 17:00 ` [linux-pm] " Alan Stern
2010-12-26 17:00 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1012261050050.18773-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2010-12-28 19:04 ` Ohad Ben-Cohen
2010-12-28 19:04 ` Ohad Ben-Cohen
2010-12-28 21:46 ` Alan Stern
2010-12-28 21:46 ` Alan Stern
2010-12-29 6:34 ` Ohad Ben-Cohen
2010-12-29 6:34 ` [linux-pm] " Ohad Ben-Cohen
2010-12-30 4:25 ` Alan Stern
2010-12-30 4:25 ` Alan Stern
2010-12-30 4:25 ` Alan Stern
2010-12-29 8:01 ` [linux-pm] " Ohad Ben-Cohen
2010-12-30 4:30 ` Alan Stern
[not found] ` <AANLkTi=QT1thWxy94=imJhbbcXQ1CD36=PnkAyaaA6Hj-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-30 4:30 ` [linux-pm] " Alan Stern
2010-12-30 4:30 ` Alan Stern
2010-12-29 8:01 ` Ohad Ben-Cohen
2010-12-28 21:46 ` Alan Stern
2010-12-28 19:04 ` Ohad Ben-Cohen
2010-12-26 17:00 ` Alan Stern
2010-12-26 2:48 ` Alan Stern
2010-12-25 16:21 ` Alan Stern
2010-12-25 7:34 ` Ohad Ben-Cohen
2010-12-23 7:51 ` Ohad Ben-Cohen
2010-12-19 10:22 ` Rafael J. Wysocki
2010-12-18 22:47 ` Rafael J. Wysocki
2010-12-18 15:07 ` Rafael J. Wysocki
2010-12-18 21:20 ` Alan Stern
2010-12-18 21:20 ` [linux-pm] " Alan Stern
2010-12-18 23:03 ` Rafael J. Wysocki
2010-12-18 23:03 ` [linux-pm] " Rafael J. Wysocki
2010-12-19 10:00 ` Ohad Ben-Cohen
2010-12-19 10:00 ` [linux-pm] " Ohad Ben-Cohen
2010-12-10 17:24 ` Alan Stern
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=201012221329.40251.rjw@sisk.pl \
--to=rjw-kkrjlpt3xs0@public.gmane.org \
--cc=ido-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org \
--cc=johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org \
--cc=khilman-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org \
--cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org \
--cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org \
/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.