From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Linux PM list <linux-pm@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Alan Stern <stern@rowland.harvard.edu>
Subject: [PATCH 2/3] PM / Runtime: Clear power.deferred_resume on success in rpm_suspend()
Date: Tue, 14 Aug 2012 23:40:44 +0200 [thread overview]
Message-ID: <201208142340.45153.rjw@sisk.pl> (raw)
In-Reply-To: <201208142334.45452.rjw@sisk.pl>
The power.deferred_resume can only be set if the runtime PM status
of device is RPM_SUSPENDING and it should be cleared after its
status has been changed, regardless of whether or not the runtime
suspend has been successful. However, it only is cleared on suspend
failure, while it may remain set after successful suspend and is
happily leaked to rpm_resume() executed in that case.
That shouldn't happen, so if power.deferred_resume is set in
rpm_suspend() after the status has been changed to RPM_SUSPENDED,
clear it before calling rpm_resume(). Then, it doesn't need to be
cleared before changing the status to RPM_SUSPENDING any more,
because it's always cleared after the status has been changed to
either RPM_SUSPENDED (on success) or RPM_ACTIVE (on failure).
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
drivers/base/power/runtime.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux/drivers/base/power/runtime.c
===================================================================
--- linux.orig/drivers/base/power/runtime.c
+++ linux/drivers/base/power/runtime.c
@@ -388,7 +388,6 @@ static int rpm_suspend(struct device *de
goto repeat;
}
- dev->power.deferred_resume = false;
if (dev->power.no_callbacks)
goto no_callback; /* Assume success. */
@@ -440,6 +439,7 @@ static int rpm_suspend(struct device *de
wake_up_all(&dev->power.wait_queue);
if (dev->power.deferred_resume) {
+ dev->power.deferred_resume = false;
rpm_resume(dev, 0);
retval = -EAGAIN;
goto out;
next prev parent reply other threads:[~2012-08-14 21:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-14 21:34 [PATCH 0/3] PM / Runtime: rpm_suspend() and rpm_resume() fixes Rafael J. Wysocki
2012-08-14 21:38 ` [PATCH 1/3] PM / Runtime: Fix rpm_resume() return value for power.no_callbacks set Rafael J. Wysocki
2012-08-15 16:14 ` Alan Stern
2012-08-14 21:40 ` Rafael J. Wysocki [this message]
2012-08-15 16:19 ` [PATCH 2/3] PM / Runtime: Clear power.deferred_resume on success in rpm_suspend() Alan Stern
2012-08-14 21:41 ` [PATCH 3/3] PM / Runtime: Check device PM QoS setting before "no callbacks" check Rafael J. Wysocki
2012-08-15 16:20 ` Alan Stern
2012-08-15 18:22 ` [Update][PATCH " Rafael J. Wysocki
2012-08-15 18:23 ` 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=201208142340.45153.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--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
Powered by JetHome