From: Pavel Machek <pavel@ucw.cz>
To: Jin Qian <jinqian@android.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <len.brown@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] power: increment wakeup_count when save_wakeup_count failed.
Date: Sat, 25 Apr 2015 22:10:34 +0200 [thread overview]
Message-ID: <20150425201034.GA3008@amd> (raw)
In-Reply-To: <1429750212-28659-3-git-send-email-jinqian@android.com>
On Wed 2015-04-22 17:50:11, Jin Qian wrote:
> user-space aborts suspend attempt if writing wakeup_count failed.
> Count the write failure towards wakeup_count.
Why should writing wakeup_count fail? Can you make sure it does not
happen, instead?
Pavel
> Signed-off-by: Jin Qian <jinqian@android.com>
> ---
> drivers/base/power/wakeup.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
> index f24c622..bdb45f3 100644
> --- a/drivers/base/power/wakeup.c
> +++ b/drivers/base/power/wakeup.c
> @@ -57,6 +57,8 @@ static LIST_HEAD(wakeup_sources);
>
> static DECLARE_WAIT_QUEUE_HEAD(wakeup_count_wait_queue);
>
> +static ktime_t last_read_time;
> +
> /**
> * wakeup_source_prepare - Prepare a new wakeup source for initialization.
> * @ws: Wakeup source to prepare.
> @@ -771,10 +773,15 @@ void pm_wakeup_clear(void)
> bool pm_get_wakeup_count(unsigned int *count, bool block)
> {
> unsigned int cnt, inpr;
> + unsigned long flags;
>
> if (block) {
> DEFINE_WAIT(wait);
>
> + spin_lock_irqsave(&events_lock, flags);
> + last_read_time = ktime_get();
> + spin_unlock_irqrestore(&events_lock, flags);
> +
> for (;;) {
> prepare_to_wait(&wakeup_count_wait_queue, &wait,
> TASK_INTERRUPTIBLE);
> @@ -806,6 +813,7 @@ bool pm_save_wakeup_count(unsigned int count)
> {
> unsigned int cnt, inpr;
> unsigned long flags;
> + struct wakeup_source *ws;
>
> events_check_enabled = false;
> spin_lock_irqsave(&events_lock, flags);
> @@ -813,6 +821,15 @@ bool pm_save_wakeup_count(unsigned int count)
> if (cnt == count && inpr == 0) {
> saved_count = count;
> events_check_enabled = true;
> + } else {
> + rcu_read_lock();
> + list_for_each_entry_rcu(ws, &wakeup_sources, entry) {
> + if (ws->active ||
> + ktime_compare(ws->last_time, last_read_time) > 0) {
> + ws->wakeup_count++;
> + }
> + }
> + rcu_read_unlock();
> }
> spin_unlock_irqrestore(&events_lock, flags);
> return events_check_enabled;
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2015-04-25 20:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1429750212-28659-1-git-send-email-jinqian@android.com>
2015-04-23 0:50 ` [PATCH 1/3] power: validate wakeup source before activating it Jin Qian
2015-04-25 20:12 ` Pavel Machek
2015-04-27 18:01 ` Jin Qian
2015-04-23 0:50 ` [PATCH 2/3] power: increment wakeup_count when save_wakeup_count failed Jin Qian
2015-04-25 20:10 ` Pavel Machek [this message]
[not found] ` <CA+yUs=xip9zgZ2w1Tzr3xs93XcBT06=DF7jyQcak96WJH9wpSg@mail.gmail.com>
2015-04-27 18:01 ` Jin Qian
2015-05-16 0:34 ` Rafael J. Wysocki
2015-05-16 1:08 ` Jin Qian
2015-05-18 0:47 ` Rafael J. Wysocki
2015-04-23 0:50 ` [PATCH 3/3] power: add a dummy wakeup_source to record statistics Jin Qian
2015-05-16 0:41 ` Rafael J. Wysocki
2015-05-16 1:25 ` Jin Qian
2015-05-18 0:35 ` 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=20150425201034.GA3008@amd \
--to=pavel@ucw.cz \
--cc=gregkh@linuxfoundation.org \
--cc=jinqian@android.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
/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.