From: "Arve Hjønnevåg" <arve@android.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Pavel Machek <pavel@ucw.cz>,
Alan Stern <stern@rowland.harvard.edu>,
"Woodruff, Richard" <r-woodruff2@ti.com>,
Arjan van de Ven <arjan@infradead.org>,
Kyle Moffett <kyle@moffetthome.net>,
Oliver Neukum <oliver@neukum.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
pm list <linux-pm@lists.linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Nigel Cunningham <nigel@nigel.suspend2.net>,
Matthew Garrett <mjg59@srcf.ucam.org>,
mark gross <mgross@linux.intel.com>,
Uli Luckas <u.luckas@road.de>,
Igor Stoppa <igor.stoppa@nokia.com>,
Brian Swetland <swetland@google.com>, Len Brown <lenb@kernel.org>
Subject: Re: [RFD] Automatic suspend
Date: Tue, 3 Mar 2009 15:38:16 -0800 [thread overview]
Message-ID: <d6200be20903031538s42c8243dk59c505857cdab7cb@mail.gmail.com> (raw)
In-Reply-To: <200903032339.02002.rjw@sisk.pl>
On Tue, Mar 3, 2009 at 2:39 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Tuesday 03 March 2009, Arve Hjønnevåg wrote:
>> On Sun, Mar 1, 2009 at 3:17 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>> > On Sunday 01 March 2009, Arve Hjønnevåg wrote:
>> >> On Sat, Feb 28, 2009 at 2:53 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>> >> > On Saturday 28 February 2009, Arve Hjønnevåg wrote:
>> >> >> Can you summarize what the problems with my current api are? I get the
>> >> >> impression that you think the overhead of using a list is too high,
>> >> >> and that timeout support should be removed because you think all
>> >> >> drivers that use it are broken.
>> >> >
>> >> > In no particular order:
>> >> > 1. One user space process can create an unlimited number of wakelocks. This
>> >> > shouldn't be possible. Moreover, it is not even necessary for any process
>> >> > to have more than one wakelock held at any time.
>> >>
>> >> This has been addressed. A user space process cannot create more
>> >> wakelocks than it has filedescriptors.
>> >>
>> >> > 2. Timeouts are wrong, because they don't really _solve_ any problem. They are
>> >> > useful for working around the fact that you can't or you don't want to
>> >> > modify every piece of code that in principle should take a wakelock and
>> >> > that's it.
>> >>
>> >> Yes, timeouts are sometimes wrong, but they are not always wrong. I
>> >> gave two examples where the use of timeouts was not incorrect.
>> >
>> > There still is a problem that the same operation can take time X on one
>> > platform and time Y on another, so how are you going to determine the timeouts
>> > that will be suitable for all platforms?
>>
>> This only applies to the timeouts that fall into the wrong category.
>> The timeout used when a driver returns -EBUSY is arbitrary, but any
>> value is technically correct. The one second timeout in the alarm
>> driver is not platform specific. It is one second because the
>> resolution of the rtc api is only one second.
>>
>> For the timeouts that do fall into the wrong category (use a timeout
>> when passing data to a unmodified subsystem), the drivers are mostly
>> (if not all) platform specific.
>
> What drivers are they?
Serial driver used for bluetooth, wifi driver and battery driver for
usb. The msm smd code also need a wakelock with a timeout before
passing data to the tty and network layers, but I did not find this.
>> >> > However, entire concept of having one code path acting on
>> >> > behalf of another one on a hunch that it might be doing something making
>> >> > suspend undesirable is conceptually broken IMO.
>> >>
>> >> OK. Do you have an alternative?
>> >
>> > Well, IMO every code path doing something that makes automatic suspend
>> > undesirable should use a suspend blocker of some sort. I'm afraid any other
>> > approach will be unreliable and racy.
>>
>> I agree with this,
>
> Good.
>
>> but I cannot change every code path at once.
>
> That need not happen at once (eg. in one patch or something). Once we've
> introduced the basics, the changes can be made gradually wherever necessary,
> step by step.
If you are OK with merging an unfinished system then this may work.
>> I also don't know if every code path can be easily fixed. Using a timeout in
>> this case is a compromise. It is not as good as protecting every code
>> path, but it is much better than doing nothing. The race condition you
>> have when preventing suspend with a timeout is the same as every code
>> using a timeout. If the system is busy it can fail. The race condition
>> that you have with no protection happens with any load. If the system
>> decides to go to sleep at the same time as a wakeup event occur, the
>> system will sleep.
>
> Well, if you have strictly limited time (eg. you want to ship a product at
> specific date), you have to go for compromises like this, but we're not in a
> hurry (or are we for some unspecified reason?). There's no deadline etc., so
> we can afford to do it right from the start (which BTW is likely to save us
> time in future).
>
> So, I'd suggest to just separate the timeouted suspend blockers from the
> basic code and introduce the latter first.
How do you want to handle drivers that return -EBUSY from suspend. The
basic code uses a wakelock with a timeout to handle this now. Without
this we can either try suspend again immediately, or activate a
suspend blocker and use a timer to release it.
> IOW, let's first try to merge things that everybody is comfortable with and
> postpone the merging of the rest. I don't think we're going to lose
> anything by doing it this way.
I think we do loose some flexibility by leaving out timeout support,
but I'll try to separate it from the first patch.
--
Arve Hjønnevåg
next prev parent reply other threads:[~2009-03-03 23:38 UTC|newest]
Thread overview: 195+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-15 23:10 Rafael J. Wysocki
2009-02-16 0:44 ` Arjan van de Ven
2009-02-16 2:12 ` Benjamin Herrenschmidt
2009-02-16 2:20 ` Arjan van de Ven
2009-02-16 3:23 ` Benjamin Herrenschmidt
2009-02-16 3:30 ` Arjan van de Ven
2009-02-16 23:05 ` Pavel Machek
2009-02-16 7:06 ` Oliver Neukum
2009-02-16 15:40 ` Arjan van de Ven
2009-02-16 16:48 ` Oliver Neukum
2009-02-16 17:31 ` Arjan van de Ven
2009-02-16 20:08 ` Kyle Moffett
2009-02-16 20:28 ` Arjan van de Ven
2009-02-16 20:39 ` Alan Stern
2009-02-16 20:45 ` Arjan van de Ven
2009-02-16 21:32 ` Woodruff, Richard
2009-02-16 21:52 ` Arjan van de Ven
2009-02-16 22:36 ` Woodruff, Richard
2009-02-16 22:59 ` Arjan van de Ven
2009-02-16 23:19 ` Rafael J. Wysocki
2009-02-16 23:23 ` Matthew Garrett
2009-02-17 10:12 ` Oliver Neukum
2009-02-17 13:58 ` Mark Brown
2009-02-17 14:20 ` Brian Swetland
2009-02-17 14:24 ` Matthew Garrett
2009-02-17 14:56 ` Oliver Neukum
2009-02-17 14:46 ` Arjan van de Ven
2009-02-17 14:51 ` Matthew Garrett
2009-02-17 14:56 ` Arjan van de Ven
2009-02-17 15:32 ` Woodruff, Richard
2009-02-18 0:04 ` Arjan van de Ven
2009-02-18 0:18 ` Woodruff, Richard
2009-02-18 5:35 ` Arjan van de Ven
2009-02-18 0:52 ` mark gross
2009-02-18 5:11 ` Arve Hjønnevåg
2009-02-18 5:55 ` Arjan van de Ven
2009-02-18 15:15 ` Matthew Garrett
2009-02-18 15:20 ` Woodruff, Richard
2009-02-17 14:58 ` Igor Stoppa
2009-02-17 15:28 ` Brian Swetland
2009-02-18 0:55 ` mark gross
2009-02-18 2:40 ` Benjamin Herrenschmidt
2009-02-18 17:48 ` Jesse Barnes
2009-02-18 17:52 ` Matthew Garrett
2009-02-18 18:01 ` Jesse Barnes
2009-02-18 22:05 ` Benjamin Herrenschmidt
2009-03-01 22:51 ` Pavel Machek
2009-02-27 10:00 ` Pavel Machek
2009-02-18 0:45 ` mark gross
2009-02-20 5:35 ` Arve Hjønnevåg
2009-02-20 15:27 ` Arjan van de Ven
2009-02-20 18:22 ` Pavel Machek
2009-02-20 18:26 ` Matthew Garrett
2009-02-20 20:49 ` Rafael J. Wysocki
2009-02-20 22:43 ` Arve Hjønnevåg
2009-02-16 23:41 ` Arjan van de Ven
2009-02-16 23:08 ` Rafael J. Wysocki
2009-02-17 3:09 ` Alan Stern
2009-02-17 23:21 ` Rafael J. Wysocki
2009-02-18 4:46 ` Arve Hjønnevåg
2009-02-18 21:17 ` Rafael J. Wysocki
2009-02-18 22:35 ` Arve Hjønnevåg
2009-02-18 22:44 ` Oliver Neukum
2009-02-18 23:04 ` Rafael J. Wysocki
2009-02-18 23:31 ` Alan Stern
2009-02-19 12:56 ` Rafael J. Wysocki
2009-02-19 14:59 ` Alan Stern
2009-02-19 21:15 ` Rafael J. Wysocki
2009-02-19 21:56 ` Brian Swetland
2009-02-19 22:08 ` Alan Stern
2009-02-19 22:21 ` Rafael J. Wysocki
2009-02-19 22:58 ` Oliver Neukum
2009-02-20 10:46 ` Rafael J. Wysocki
2009-02-20 22:05 ` Oliver Neukum
2009-02-20 22:44 ` Rafael J. Wysocki
2009-02-20 23:11 ` Arve Hjønnevåg
2009-02-20 23:20 ` Oliver Neukum
2009-02-21 1:59 ` Arve Hjønnevåg
2009-02-20 2:39 ` Arve Hjønnevåg
2009-02-20 10:49 ` Rafael J. Wysocki
2009-02-20 11:26 ` Arve Hjønnevåg
2009-02-20 15:56 ` Rafael J. Wysocki
2009-02-20 16:07 ` Kyle Moffett
2009-02-20 20:56 ` Rafael J. Wysocki
2009-02-20 21:02 ` Rafael J. Wysocki
2009-02-20 23:03 ` Arve Hjønnevåg
2009-02-20 23:57 ` Rafael J. Wysocki
2009-02-21 1:08 ` Arve Hjønnevåg
2009-02-21 9:47 ` Rafael J. Wysocki
2009-02-21 10:32 ` Arve Hjønnevåg
2009-02-21 20:20 ` Rafael J. Wysocki
2009-02-23 23:13 ` Arve Hjønnevåg
2009-02-23 23:53 ` Rafael J. Wysocki
2009-02-24 0:02 ` Arve Hjønnevåg
2009-02-27 10:12 ` Pavel Machek
2009-02-27 10:09 ` Pavel Machek
2009-02-27 14:22 ` Rafael J. Wysocki
2009-02-27 14:29 ` Matthew Garrett
2009-02-27 20:54 ` Rafael J. Wysocki
2009-02-27 22:09 ` Arve Hjønnevåg
2009-02-27 22:55 ` Rafael J. Wysocki
2009-02-27 20:40 ` Pavel Machek
2009-02-27 20:55 ` Rafael J. Wysocki
2009-02-27 22:56 ` Arve Hjønnevåg
2009-02-27 23:44 ` Pavel Machek
2009-02-28 3:04 ` Arve Hjønnevåg
2009-02-28 10:18 ` Rafael J. Wysocki
2009-02-28 21:57 ` Arve Hjønnevåg
2009-02-28 22:53 ` Rafael J. Wysocki
2009-02-28 23:38 ` Arve Hjønnevåg
2009-03-01 23:17 ` Rafael J. Wysocki
2009-03-02 23:48 ` Arve Hjønnevåg
2009-03-03 22:39 ` Rafael J. Wysocki
2009-03-03 23:38 ` Arve Hjønnevåg [this message]
2009-03-04 0:49 ` Pavel Machek
2009-03-01 0:06 ` Arve Hjønnevåg
2009-03-01 6:28 ` Benjamin Herrenschmidt
2009-03-01 9:11 ` Rafael J. Wysocki
2009-03-01 9:20 ` Rafael J. Wysocki
2009-03-03 1:22 ` Arve Hjønnevåg
2009-03-03 13:51 ` Pavel Machek
2009-03-04 0:06 ` Arve Hjønnevåg
2009-03-04 0:47 ` Pavel Machek
2009-03-01 23:08 ` Pavel Machek
2009-03-03 13:57 ` Pavel Machek
2009-03-03 23:51 ` Arve Hjønnevåg
2009-02-20 23:12 ` Oliver Neukum
2009-02-20 23:40 ` Rafael J. Wysocki
2009-02-20 23:45 ` Matthew Garrett
2009-02-21 9:52 ` Rafael J. Wysocki
2009-02-21 16:52 ` Alan Stern
2009-02-21 21:14 ` Rafael J. Wysocki
2009-02-27 10:16 ` Pavel Machek
2009-02-27 14:46 ` Alan Stern
2009-02-27 20:58 ` Rafael J. Wysocki
2009-02-22 14:03 ` Pavel Machek
2009-02-23 14:04 ` Oliver Neukum
2009-02-27 10:18 ` Pavel Machek
2009-02-27 15:22 ` Oliver Neukum
2009-03-05 16:54 ` Pavel Machek
2009-02-27 17:09 ` Chris Friesen
2009-02-27 20:46 ` Pavel Machek
2009-03-05 13:48 ` Pavel Machek
2009-03-01 22:56 ` Pavel Machek
2009-03-02 8:24 ` Oliver Neukum
2009-03-02 14:34 ` Pavel Machek
2009-03-02 15:13 ` Arjan van de Ven
2009-02-16 23:20 ` Oliver Neukum
2009-02-20 18:05 ` Pavel Machek
2009-02-16 6:23 ` Roland Dreier
2009-02-16 15:38 ` Arjan van de Ven
2009-02-16 22:47 ` Pavel Machek
2009-02-16 7:02 ` Oliver Neukum
2009-02-16 21:48 ` Rafael J. Wysocki
2009-02-16 21:52 ` Peter Zijlstra
2009-02-16 21:53 ` Arjan van de Ven
2009-02-16 22:12 ` Rafael J. Wysocki
2009-02-16 22:40 ` Alan Stern
2009-02-16 22:56 ` Arjan van de Ven
2009-02-16 23:28 ` Rafael J. Wysocki
2009-02-17 2:43 ` Alan Stern
2009-02-17 2:57 ` Arjan van de Ven
2009-02-17 3:26 ` Alan Stern
2009-02-16 23:02 ` Rafael J. Wysocki
2009-02-17 2:56 ` Alan Stern
2009-02-17 23:26 ` Rafael J. Wysocki
2009-02-18 8:53 ` Oliver Neukum
2009-02-18 14:51 ` Arjan van de Ven
2009-02-18 15:05 ` Oliver Neukum
2009-02-18 15:10 ` Alan Stern
2009-02-18 15:55 ` Oliver Neukum
2009-02-18 16:39 ` Alan Stern
2009-02-18 17:10 ` Oliver Neukum
2009-02-18 15:09 ` Alan Stern
2009-02-16 22:51 ` Pavel Machek
2009-02-16 22:55 ` Arjan van de Ven
2009-02-16 23:00 ` Rafael J. Wysocki
2009-02-16 23:18 ` Pavel Machek
2009-02-16 23:29 ` Oliver Neukum
2009-02-16 22:58 ` Pavel Machek
2009-02-16 23:13 ` Matthew Garrett
2009-02-16 23:22 ` Pavel Machek
2009-02-16 23:26 ` Matthew Garrett
2009-02-17 14:14 ` Brian Swetland
2009-02-17 14:19 ` Matthew Garrett
2009-02-17 21:57 ` mark gross
2009-02-17 22:04 ` Matthew Garrett
2009-02-17 22:19 ` Jesse Barnes
2009-02-17 23:28 ` Woodruff, Richard
2009-02-18 0:34 ` mark gross
2009-02-18 17:30 ` Chris Ball
2009-02-16 23:26 ` Rafael J. Wysocki
2009-02-22 13:46 ` Pavel Machek
2009-02-18 0:27 ` mark gross
2009-02-18 21:11 ` 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=d6200be20903031538s42c8243dk59c505857cdab7cb@mail.gmail.com \
--to=arve@android.com \
--cc=arjan@infradead.org \
--cc=benh@kernel.crashing.org \
--cc=igor.stoppa@nokia.com \
--cc=kyle@moffetthome.net \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mgross@linux.intel.com \
--cc=mjg59@srcf.ucam.org \
--cc=nigel@nigel.suspend2.net \
--cc=oliver@neukum.org \
--cc=pavel@ucw.cz \
--cc=r-woodruff2@ti.com \
--cc=rjw@sisk.pl \
--cc=stern@rowland.harvard.edu \
--cc=swetland@google.com \
--cc=u.luckas@road.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
all inboxes | Powered by JetHome®