From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Greg KH <gregkh@suse.de>, LKML <linux-kernel@vger.kernel.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
"Linux-pm mailing list" <linux-pm@lists.linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
Arjan van de Ven <arjan@infradead.org>
Subject: Re: [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 6)
Date: Mon, 29 Jun 2009 18:39:15 +0200 [thread overview]
Message-ID: <200906291839.16631.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0906291203070.17436-100000@iolanthe.rowland.org>
On Monday 29 June 2009, Alan Stern wrote:
> On Mon, 29 Jun 2009, Rafael J. Wysocki wrote:
>
> > > It doesn't need to know. All it needs to do is guarantee that the
> > > device will be in a resumed state some time not long after the function
> > > returns. Thus calling rpm_request_resume while the status is RPM_IDLE
> > > is like calling it while the status is RPM_ACTIVE. In neither case
> > > does it have to do anything, because the device will already be resumed
> > > when it returns.
> >
> > Not exactly, because RPM_IDLE prevents idle notifications from being run,
> > as it means a suspend has already been requested, which is not really the
> > case after pm_request_resume().
>
> Yes it is. A delayed suspend and an immediate resume have _both_ been
> requested. We are within our rights to say that the resume request
> gets fulfilled immediately (by doing nothing) and the suspend request
> will be fulfilled later.
Theoretically, we are, but practically we want to be able to use
pm_runtime_put() (the asynchronous version) after a pm_runtime_resume()
that found the device operational, but that would result in queuing a request
using the same work structure that is used by the pending suspend request.
Don't you see a problem here?
> > > > No, it doesn't matter if the request runs, but it does matter if the work
> > > > structure used for queuing it up may be used for another purpose. :-)
> > >
> > > What else would it be used for? If rpm_request_resume returns without
> > > doing anything and leaves the status set to RPM_IDLE, then the work
> > > structure won't be reused until the status changes.
> >
> > Which is not right, because we may want to run ->runtime_idle() before
> > the status is changed.
>
> If the status is RPM_IDLE then there's already a suspend request
> queued. So what reason is there for sending idle notifications? The
> whole point of idle notifications is to let the driver know that it
> might want to initiate a suspend -- but one has already been initiated.
>
> > That's why I think pm_request_resume() should queue up a resume request if
> > a suspend request is pending.
>
> Surely you don't mean we should suspend the device and then resume it
> immediately afterward?
No, I don't.
> What would be the point? Just leave the device active throughout.
Absolutely.
> As long as the behavior is documented, I think it will be okay for
> pm_request_resume not to cancel a pending suspend request.
I could agree with that, but what about pm_runtime_resume() happening after
a suspend request has been scheduled? Should it also ignore the pending
suspend request?
In which case it would be consistent to allow to schedule suspends even though
the resume counter is greater than 0.
Best,
Rafael
next prev parent reply other threads:[~2009-06-29 16:39 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-22 23:21 [PATCH] PM: Introduce core framework for run-time PM of I/O devices (rev. 3) Rafael J. Wysocki
2009-06-23 17:00 ` Rafael J. Wysocki
2009-06-23 17:10 ` Alan Stern
2009-06-24 0:08 ` Rafael J. Wysocki
2009-06-24 0:36 ` [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 4) Rafael J. Wysocki
2009-06-24 19:24 ` [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 5) Rafael J. Wysocki
2009-06-24 21:30 ` Alan Stern
2009-06-25 16:49 ` [linux-pm] " Alan Stern
2009-06-25 21:58 ` Rafael J. Wysocki
2009-06-25 23:17 ` Rafael J. Wysocki
2009-06-26 18:06 ` Alan Stern
2009-06-26 20:46 ` [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 6) Rafael J. Wysocki
2009-06-26 21:13 ` Alan Stern
2009-06-26 22:32 ` Rafael J. Wysocki
2009-06-27 1:25 ` Alan Stern
2009-06-27 14:51 ` Alan Stern
2009-06-27 21:51 ` [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 7) Rafael J. Wysocki
2009-06-28 10:25 ` [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 6) Rafael J. Wysocki
2009-06-28 21:07 ` Alan Stern
2009-06-29 0:15 ` Rafael J. Wysocki
2009-06-29 3:05 ` Alan Stern
2009-06-29 14:09 ` Rafael J. Wysocki
2009-06-29 14:29 ` Alan Stern
2009-06-29 14:54 ` Rafael J. Wysocki
2009-06-29 15:27 ` Alan Stern
2009-06-29 15:55 ` Rafael J. Wysocki
2009-06-29 16:10 ` Alan Stern
2009-06-29 16:39 ` Rafael J. Wysocki [this message]
2009-06-29 17:29 ` Alan Stern
2009-06-29 18:25 ` Rafael J. Wysocki
2009-06-29 19:25 ` Alan Stern
2009-06-29 21:04 ` Rafael J. Wysocki
2009-06-29 22:00 ` Alan Stern
2009-06-29 22:50 ` Rafael J. Wysocki
2009-06-30 15:10 ` Alan Stern
2009-06-30 22:30 ` [RFC] Run-time PM framework (was: Re: [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 6)) Rafael J. Wysocki
2009-07-01 15:35 ` Alan Stern
2009-07-01 22:19 ` Rafael J. Wysocki
2009-07-02 15:42 ` Rafael J. Wysocki
2009-07-02 15:55 ` Alan Stern
2009-07-02 17:50 ` Rafael J. Wysocki
2009-07-02 19:53 ` Alan Stern
2009-07-02 23:05 ` Rafael J. Wysocki
2009-07-03 20:58 ` Alan Stern
2009-07-03 23:57 ` Rafael J. Wysocki
2009-07-04 3:12 ` Alan Stern
2009-07-04 21:27 ` Rafael J. Wysocki
2009-07-05 14:50 ` Alan Stern
2009-07-05 21:47 ` Rafael J. Wysocki
2009-06-26 21:49 ` [patch update] PM: Introduce core framework for run-time PM of I/O devices (rev. 5) Rafael J. Wysocki
2009-06-25 14:57 ` Magnus Damm
2009-06-26 22:02 ` Rafael J. Wysocki
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=200906291839.16631.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=arjan@infradead.org \
--cc=gregkh@suse.de \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mingo@elte.hu \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox