From: Pavel Machek <pavel@ucw.cz>
To: Arve Hj?nnev?g <arve@android.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
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: Sat, 28 Feb 2009 00:44:59 +0100 [thread overview]
Message-ID: <20090227234458.GB2089@elf.ucw.cz> (raw)
In-Reply-To: <d6200be20902271456w77951afata1d5f378ddbe6b84@mail.gmail.com>
Hi!
> >> > > Wakelocks done right are single atomic_t... and if you set it to 0,
> >> > > you just unblock "sleeper" thread or something. Zero polling and very
> >> > > simple...
> >> >
> >> > Except that you have to check all of the wakelocks periodically in a loop =>
> >> > polling. So?
> >>
> >> No. I want to have single atomic_t for all the wakelocks... at least
> >> in non-debug version. Debug version will be slower. I believe you
> >> originally suggested that.
> >
> > I did, but please don't call it "wakelocks". It's confusing.
>
> What you are talking about here is mostly an optimization of the
> wakelock api. You have removed timeout support and made each wakelock
> reference counted. If you ignore wakelocks with timeouts, the current
> wakelock interface can be implemented with a global atomic_t to
> prevent suspend, and a per wakelock atomic_t to prevent a single
> client from changing the global reference count by more than one.
Actually I'd go to global atomic_t to prevent suspend, and make sure
single client only changes it once by design.
> There are a couple of reasons that I have not done this. It removes
> the ability to easily inspect the system when it is not suspending. I
> do provide an option to turn off the wakelock stats, which makes
> wake_lock/unlock significantly faster, but we never run with wakelock
> stats off.
It seems wrong to design for the "debugging" case. ... even if you run
with debugging enabled.
> Also, it pushes timeout handling to the drivers. I know
> may
> of you don't like timeout support, but ignoring the problem is not a
> solution. If each driver that needs timeouts uses its own timer, then
> you will often wakeup from idle just to unlock a wakelock that will
> not trigger suspend. This wakeup is a thousand times as costly on the
> msm platform as a wakelock/unlock pair (with wakelock stats
> enabled).
Well, you are free to have a library (or something) those broken
drivers can use. But you have to understand that those drivers are
broken... and please don't make it part of core API.
It should also make the merging easier; merge non-contraversial parts
first (single atomic_t), then add debugging infrastructure, then maybe
add timeout handling if those drivers can really not be fixed in a
nicer way...
Pavel
--
(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:[~2009-02-27 23:42 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 [this message]
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
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=20090227234458.GB2089@elf.ucw.cz \
--to=pavel@ucw.cz \
--cc=arjan@infradead.org \
--cc=arve@android.com \
--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=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®