From: Alan Stern <stern@rowland.harvard.edu>
To: David Brownell <david-b@pacbell.net>
Cc: Florian Mickler <florian@mickler.org>, <markgross@thegnar.org>,
mark gross <640e9920@gmail.com>, Neil Brown <neilb@suse.de>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux-pm mailing list <linux-pm@lists.linux-foundation.org>
Subject: Re: [linux-pm] [RFC][PATCH] PM: Avoid losing wakeup events during suspend
Date: Mon, 21 Jun 2010 11:06:27 -0400 (EDT) [thread overview]
Message-ID: <Pine.LNX.4.44L0.1006211055090.1687-100000@iolanthe.rowland.org> (raw)
In-Reply-To: <799617.66764.qm@web180304.mail.gq1.yahoo.com>
On Sun, 20 Jun 2010, David Brownell wrote:
> Can we put this more directly: the problem is
> that the *SYSTEM ISN'T FULLY SUSPENDED* when the
> hardware wake event triggers? (Where "*SYSTEM*
> includes userspace not just kernel. In fact the
> overall system is built from many subsystems,
> some in the kernel and some in userspace.
Indeed, the system may not even be partially suspended when the wake
event triggers.
> At the risk of being prematurely general: I'd
> point out that these subsystems probably have
> sequencing requirements. kernel-then-user is
> a degenerate case, and surely oversimplified.
> There are other examples, e.g. between kernel
> subsystems... Like needing to suspend a PMIC
> before the bus it uses, where that bus uses
> a task to manage request/response protocols.
> (Think I2C or SPI.)
>
> This is like the __init/__exit sequencing mess...
>
> In terms of userspace event delivery, I'd say
> it's a bug in the event mechanism if taking the
> next step in suspension drops any event. It
> should be queued, not lost... As a rule the
> hardware queuing works (transparently)...
There may be a misunderstanding here... People talk about events
getting lost, but what they (usually) mean is that the event isn't
actually _dropped_ -- rather, it fails to trigger a wakeup or to
prevent a suspend. When something else causes the system to resume
later on, the event will be delivered normally.
This means that the problem is not one of sequencing. The problem is
twofold:
To recognize when a wakeup event has occurred and therefore
it is not now safe to allow the system to suspend;
And to recognize when a wakeup event has been completely
handled and therefore it is once again safe to allow the system
to suspend.
> > Of course, the underlying
> > > > issue here is that the kernel has no direct way
> > to know when userspace
> > > > has finished processing an event.
>
>
> Again said more directly: there's no current
> mechanism to coordinate subsystems. Userspace
> can't communicate "I'm ready" to kernel, and
> vice versa. (a few decades ago, APM could do
> that ... we dropped such mechanisms though, and
> I'm fairly sure APM's implementation was holey.)
Yes, that's a better way of putting it. And it's not just a matter of
"userspace communicating with the kernel", because userspace is not
monolithic. There has to be a way for one user process to communicate
this information to another (I like Florian's idea). Of course, the
kernel doesn't have to worry about those details.
If one accepts a scheme in which all the suspend initiations and
cancellations are carried out by a single process (a power-manager
process), then the difficulties of communication and coordination
between the kernel and userspace are minimized.
Alan Stern
next prev parent reply other threads:[~2010-06-21 15:06 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-19 22:05 [RFC][PATCH] PM: Avoid losing wakeup events during suspend Rafael J. Wysocki
2010-06-20 5:52 ` mark gross
2010-06-20 12:49 ` Rafael J. Wysocki
2010-06-20 23:13 ` mark gross
2010-06-20 16:28 ` Alan Stern
2010-06-20 21:50 ` Rafael J. Wysocki
2010-06-21 2:23 ` Alan Stern
2010-06-21 5:32 ` Florian Mickler
2010-06-21 15:23 ` Alan Stern
2010-06-21 20:38 ` Florian Mickler
2010-06-21 22:18 ` Alan Stern
2010-06-21 22:40 ` Rafael J. Wysocki
2010-06-21 22:48 ` Rafael J. Wysocki
2010-06-22 0:50 ` Arve Hjønnevåg
2010-06-22 10:21 ` Rafael J. Wysocki
2010-06-22 14:35 ` Alan Stern
2010-06-22 15:35 ` Rafael J. Wysocki
2010-06-22 19:55 ` Alan Stern
2010-06-22 20:58 ` Rafael J. Wysocki
2010-06-22 19:59 ` [update] " Rafael J. Wysocki
2010-06-22 20:34 ` Alan Stern
2010-06-22 21:41 ` Rafael J. Wysocki
2010-06-23 2:12 ` Alan Stern
2010-06-23 10:09 ` Rafael J. Wysocki
2010-06-23 15:21 ` Alan Stern
2010-06-23 22:17 ` Rafael J. Wysocki
2010-06-24 13:13 ` [update 2] " Rafael J. Wysocki
2010-06-24 15:06 ` Rafael J. Wysocki
2010-06-24 15:35 ` Alan Stern
2010-06-24 23:00 ` [update 3] " Rafael J. Wysocki
2010-06-25 14:42 ` Alan Stern
2010-06-25 20:33 ` Rafael J. Wysocki
2010-06-24 15:44 ` [update 2] " Alan Stern
2010-06-24 16:19 ` Rafael J. Wysocki
2010-06-24 17:09 ` Alan Stern
2010-06-24 23:06 ` Rafael J. Wysocki
2010-06-25 15:09 ` Alan Stern
2010-06-25 20:37 ` Rafael J. Wysocki
2010-06-25 20:57 ` Alan Stern
2010-06-25 6:40 ` Florian Mickler
2010-06-25 13:28 ` Rafael J. Wysocki
[not found] ` <201006222159.28081.rjw__37084.1419128284$1277237903$gmane$org@sisk.pl>
2010-06-24 14:16 ` [update] " Andy Lutomirski
2010-06-24 14:45 ` Alan Stern
2010-06-24 14:48 ` Rafael J. Wysocki
2010-06-24 15:21 ` Andy Lutomirski
2010-06-22 23:00 ` mark gross
2010-06-21 16:54 ` Alan Stern
2010-06-21 20:40 ` Florian Mickler
2010-06-21 21:18 ` Rafael J. Wysocki
2010-06-21 22:27 ` Alan Stern
2010-06-21 6:13 ` mark gross
2010-06-21 12:10 ` tytso
2010-06-21 12:22 ` Alan Cox
2010-06-21 12:26 ` Florian Mickler
2010-06-21 13:42 ` tytso
2010-06-21 14:01 ` Alan Cox
2010-06-22 1:07 ` mark gross
2010-06-21 16:01 ` Alan Stern
2010-06-22 1:25 ` mark gross
2010-06-22 2:24 ` Alan Stern
2010-06-21 21:58 ` Rafael J. Wysocki
2010-06-20 22:58 ` mark gross
2010-06-21 2:33 ` Alan Stern
2010-06-21 4:04 ` [linux-pm] " David Brownell
2010-06-21 6:02 ` David Brownell
2010-06-21 15:06 ` Alan Stern [this message]
2010-06-21 5:55 ` mark gross
2010-06-21 12:39 ` Florian Mickler
2010-06-21 15:57 ` Alan Stern
2010-06-22 1:58 ` mark gross
2010-06-22 2:46 ` Alan Stern
2010-06-22 9:24 ` Rafael J. Wysocki
2010-06-22 6:18 ` Florian Mickler
2010-06-22 23:22 ` mark gross
2010-06-22 9:29 ` 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=Pine.LNX.4.44L0.1006211055090.1687-100000@iolanthe.rowland.org \
--to=stern@rowland.harvard.edu \
--cc=640e9920@gmail.com \
--cc=david-b@pacbell.net \
--cc=dmitry.torokhov@gmail.com \
--cc=florian@mickler.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=markgross@thegnar.org \
--cc=neilb@suse.de \
/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).