From: NeilBrown <neilb@suse.de>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
mark gross <markgross@thegnar.org>,
LKML <linux-kernel@vger.kernel.org>,
John Stultz <john.stultz@linaro.org>,
Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [RFC][PATCH 0/2] PM / Sleep: Extended control of suspend/hibernate interfaces
Date: Tue, 25 Oct 2011 13:52:44 +1100 [thread overview]
Message-ID: <20111025135244.710e43fa@notabene.brown> (raw)
In-Reply-To: <201110241223.43362.rjw@sisk.pl>
[-- Attachment #1: Type: text/plain, Size: 4613 bytes --]
On Mon, 24 Oct 2011 12:23:43 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> On Monday, October 24, 2011, NeilBrown wrote:
> > On Sun, 23 Oct 2011 15:16:36 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> > Similarly every system need one process to manage suspend. It can be my
> > daemon or your daemon or Alan's daemon but it cannot be 2 or more of them
> > running at the same time as that doesn't make any more sense than having
> > systemd and init running at the same time.
>
> I agree that it doesn't makes sense. I don't agree that it implies people
> won't try to do that.
Does that matter? If they complain, tell them it isn't a supported
configuration.
>
> > > > > > So I'd respond with "I'm not at all sure that we should throw away an
> > > > > > all-userspace solution just yet". Particularly because many of us seem to
> > > > > > still be working to understand what all the issues really are.
> > > > >
> > > > > OK, so perhaps we should try to implement two concurrent solutions, one
> > > > > kernel-based and one purely in user space and decide which one is better
> > > > > afterwards?
> > > >
> > > > Absolutely.
> > > >
> > > > My primary reason for entering this discussion is eloquently presented in
> > > > http://xkcd.com/386/
> > > >
> > > > Someone said "We need to change the kernel to get race-free suspend" and this
> > > > simply is not true. I wanted to present a way to use the existing
> > > > functionality to provide race-free suspend - and now even have code to do it.
> > > >
> > > > If someone else wants to write a different implementation, either in
> > > > userspace or kernel that is fine.
> > > >
> > > > They can then present it as "I know this can be implemented in userspace, but
> > > > I don't like that solution for reasons X, Y, Z and so here is my better
> > > > kernel-space implementation" then that is cool. We can examine X, Y, Z and
> > > > the code and see if the argument holds up. Maybe it will, maybe not.
> > > >
> > > > So far the only arguments I've seen for putting the code in the kernel are:
> > > >
> > > > 1/ it cannot be done in userspace - demonstrably wrong
> > >
> > > I'm not sure if that's correct. If you meant "it can be done in user space
> > > without _any_ kernel modifications", I probably wouldn't agree.
> >
> > I have code to do it correctly today with no kernel modifications. It is
> > called "lsusd". Proof by example. Or can you show that lsusd doesn't work
> > correctly?
>
> So why do you consider making changes to the kernel (described in the other
> part of the thread)? Are they completely cosmetic or are they needed for
> functionality?
Not needed. Maybe helpful.
I have suggested three kernel changes - with varying levels of seriousness.
1/ Changes to wakeup_count so that it can be read without blocking.
This is currently just a "general cleanliness" issue. It could become
more of an issue if some kernel code activated a wakeup_source for a long
time.
It is not a problem at all for my current code, but if we wanted a single
suspend daemon that didn't need threads or a helper process, then it might
become an issue.
2/ Changes to flock locking so that a process can get notified when a
lock attempt might succeed. This is just me grumbling about incomplete
locking semantics and has nothing to do with power management directly.
3/ Activating a wakeup_source when an RTC alarm fires. This patch was
proposed by John Stultz - I just supported it.
It isn't strict necessary as the suspend daemon can check the RTC
just before suspending and refuse to suspend in the alarm will fire in the
next 2 seconds.
However this assumes that the suspend will then complete within 2 seconds.
This seems likely but I don't know that it is guaranteed. The 2 second
window could be extended, but that isn't really ideal.
So this is one kernel change that could be deemed to be "necessary".
However it isn't really a chance in design at all - it just acknowledges
that the RTC alarm is a wakeup source, so registers a wakeup_source for
it, so it is really just a bug fix.
I'm still interested to know what you think of this patch. While it isn't
strictly needed I think it would be very helpful.
(Without this, alarmtimers is racy too ... and it doesn't even insert a
2 second window .... I'm not really convinced alarmtimers is a good thing
but it isn't clear that it is a bad thing either).
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
next prev parent reply other threads:[~2011-10-25 2:52 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-13 19:45 Rafael J. Wysocki
2011-10-13 19:49 ` [RFC][PATCH 1/2] PM / Sleep: Add mechanism to disable suspend and hibernation Rafael J. Wysocki
2011-10-13 19:50 ` [RFC][PATCH 2/2] PM / Sleep: Introduce cooperative suspend/hibernate mode Rafael J. Wysocki
2011-10-13 22:58 ` John Stultz
2011-10-14 22:49 ` Rafael J. Wysocki
2011-10-15 0:04 ` John Stultz
2011-10-15 21:29 ` Rafael J. Wysocki
2011-10-17 16:48 ` John Stultz
2011-10-17 18:19 ` Alan Stern
2011-10-17 19:08 ` John Stultz
2011-10-17 20:07 ` Alan Stern
2011-10-17 20:34 ` John Stultz
2011-10-17 20:38 ` Rafael J. Wysocki
2011-10-17 21:20 ` John Stultz
2011-10-17 21:19 ` NeilBrown
2011-10-17 21:43 ` John Stultz
2011-10-17 23:06 ` NeilBrown
2011-10-17 23:14 ` NeilBrown
2011-10-17 21:13 ` Rafael J. Wysocki
2011-10-14 5:52 ` [RFC][PATCH 0/2] PM / Sleep: Extended control of suspend/hibernate interfaces NeilBrown
2011-10-14 16:00 ` Alan Stern
2011-10-14 21:07 ` NeilBrown
2011-10-15 18:34 ` Alan Stern
2011-10-15 21:43 ` NeilBrown
2011-10-15 22:10 ` Rafael J. Wysocki
2011-10-16 2:49 ` Alan Stern
2011-10-16 14:51 ` Alan Stern
2011-10-16 20:32 ` Rafael J. Wysocki
2011-10-17 15:33 ` Alan Stern
2011-10-17 21:10 ` Rafael J. Wysocki
2011-10-17 21:27 ` Rafael J. Wysocki
2011-10-18 17:30 ` Alan Stern
2011-10-16 22:34 ` NeilBrown
2011-10-17 14:45 ` Alan Stern
2011-10-17 22:49 ` NeilBrown
2011-10-17 23:47 ` John Stultz
2011-10-18 2:13 ` NeilBrown
2011-10-18 17:11 ` Alan Stern
2011-10-18 22:55 ` NeilBrown
2011-10-19 16:19 ` Alan Stern
2011-10-20 0:17 ` NeilBrown
2011-10-20 14:29 ` Alan Stern
2011-10-21 5:05 ` NeilBrown
2011-10-21 5:23 ` lsusd - The Linux SUSpend Daemon NeilBrown
2011-10-21 16:07 ` Alan Stern
2011-10-21 22:34 ` NeilBrown
2011-10-22 2:00 ` Alan Stern
2011-10-22 16:31 ` Alan Stern
2011-10-23 3:31 ` NeilBrown
2011-10-23 8:21 ` NeilBrown
2011-10-23 12:48 ` Rafael J. Wysocki
2011-10-23 23:04 ` NeilBrown
2011-10-23 16:17 ` Alan Stern
2011-10-21 20:10 ` david
2011-10-21 22:09 ` NeilBrown
2011-10-26 14:31 ` Jan Engelhardt
2011-10-27 4:34 ` NeilBrown
2011-10-31 15:11 ` [RFC][PATCH 0/2] PM / Sleep: Extended control of suspend/hibernate interfaces Richard Hughes
2011-10-16 20:26 ` Rafael J. Wysocki
2011-10-16 23:48 ` NeilBrown
2011-10-17 15:43 ` Alan Stern
2011-10-17 22:02 ` Rafael J. Wysocki
2011-10-17 23:36 ` NeilBrown
2011-10-22 22:07 ` Rafael J. Wysocki
2011-10-23 2:57 ` NeilBrown
2011-10-23 13:16 ` Rafael J. Wysocki
2011-10-23 23:44 ` NeilBrown
2011-10-24 10:23 ` Rafael J. Wysocki
2011-10-25 2:52 ` NeilBrown [this message]
2011-10-25 7:47 ` Valdis.Kletnieks
2011-10-25 8:35 ` Rafael J. Wysocki
2011-10-23 15:50 ` Alan Stern
2011-10-27 21:06 ` Rafael J. Wysocki
2011-10-28 0:02 ` NeilBrown
2011-10-28 8:27 ` Rafael J. Wysocki
2011-10-28 15:08 ` Alan Stern
2011-10-28 17:26 ` Rafael J. Wysocki
2011-10-31 19:55 ` Ming Lei
2011-10-31 21:15 ` NeilBrown
2011-10-31 21:23 ` Ming Lei
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=20111025135244.710e43fa@notabene.brown \
--to=neilb@suse.de \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=markgross@thegnar.org \
--cc=rjw@sisk.pl \
--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