From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Linux-sh list <linux-sh@vger.kernel.org>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
Paul Mundt <lethal@linux-sh.org>,
Simon Horman <horms@verge.net.au>,
Magnus Damm <magnus.damm@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
Cao Minh Hiep <hiepcm@gmail.com>
Subject: [PATCH 1/6] PM / Domains: Fix handling of wakeup devices during system resume
Date: Tue, 13 Mar 2012 00:24:11 +0000 [thread overview]
Message-ID: <201203130124.11871.rjw@sisk.pl> (raw)
In-Reply-To: <201203130123.16268.rjw@sisk.pl>
From: Rafael J. Wysocki <rjw@sisk.pl>
During system suspend pm_genpd_suspend_noirq() checks if the given
device is in a wakeup path (i.e. it appears to be needed for one or
more wakeup devices to work or is a wakeup device itself) and if it
needs to be "active" for wakeup to work. If that is the case, the
function returns 0 without incrementing the device domain's counter
of suspended devices and without executing genpd_stop_dev() for the
device. In consequence, the device is not stopped (e.g. its clock
isn't disabled) and power is always supplied to its domain in the
resulting system sleep state.
However, pm_genpd_resume_noirq() doesn't repeat that check and it
runs genpd_start_dev() and decrements the domain's counter of
suspended devices even for the wakeup device that weren't stopped by
pm_genpd_suspend_noirq(). As a result, the start callback may be run
unnecessarily for them and their domains' counters of suspended
devices may become negative. Both outcomes aren't desirable, so fix
pm_genpd_resume_noirq() to look for wakeup devices that might not be
stopped by during system suspend.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
drivers/base/power/domain.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux/drivers/base/power/domain.c
=================================--- linux.orig/drivers/base/power/domain.c
+++ linux/drivers/base/power/domain.c
@@ -896,7 +896,8 @@ static int pm_genpd_resume_noirq(struct
if (IS_ERR(genpd))
return -EINVAL;
- if (genpd->suspend_power_off)
+ if (genpd->suspend_power_off
+ || (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev)))
return 0;
/*
next prev parent reply other threads:[~2012-03-13 0:24 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-13 0:23 [PATCH 0/6] PM / Domains: System suspend fixes and "always on" flag Rafael J. Wysocki
2012-03-13 0:24 ` Rafael J. Wysocki [this message]
2012-03-13 0:24 ` [PATCH 2/6] PM / Domains: Fix hibernation restore of devices Rafael J. Wysocki
2012-03-13 21:32 ` [Replacement][PATCH 2/6] PM / Domains: Fix hibernation restore of devices, v2 Rafael J. Wysocki
2012-03-15 9:39 ` Simon Horman
2012-03-15 21:00 ` Rafael J. Wysocki
2012-03-16 0:03 ` Simon Horman
2012-03-13 0:25 ` [PATCH 3/6] PM / Domains: Introduce "always on" device flag Rafael J. Wysocki
2012-03-13 21:34 ` [Update][PATCH " Rafael J. Wysocki
2012-03-13 0:26 ` [PATCH 4/6] PM / shmobile: Make TMU driver use pm_genpd_dev_always_on() Rafael J. Wysocki
2012-03-13 0:27 ` [PATCH 5/6] PM / shmobile: Make CMT " Rafael J. Wysocki
2012-03-13 0:28 ` [PATCH 6/6] PM / shmobile: Make MTU2 " Rafael J. Wysocki
2012-03-13 1:27 ` [PATCH 0/6] PM / Domains: System suspend fixes and "always on" flag Simon Horman
2012-03-13 1:44 ` Paul Mundt
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=201203130124.11871.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=hiepcm@gmail.com \
--cc=horms@verge.net.au \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).