From: mark gross <mgross@linux.intel.com>
To: "Arve Hjønnevåg" <arve@android.com>
Cc: swetland@google.com, linux-pm@lists.linux-foundation.org,
u.luckas@road.de, ncunningham@crca.org.au
Subject: Re: [PATCH 03/13] PM: Implement wakelock api.
Date: Fri, 6 Feb 2009 16:33:35 -0800 [thread overview]
Message-ID: <20090207003334.GA13923@linux.intel.com> (raw)
In-Reply-To: <d6200be20902051638p37fb012do8e0aad0e67cf4305@mail.gmail.com>
On Thu, Feb 05, 2009 at 04:38:04PM -0800, Arve Hjønnevåg wrote:
> On Thu, Feb 5, 2009 at 4:10 PM, mark gross <mgross@linux.intel.com> wrote:
> > On Wed, Feb 04, 2009 at 06:50:16PM -0800, Arve Hjønnevåg wrote:
> >> +static void update_sleep_wait_stats_locked(int done)
> >> +{
> >> + struct wake_lock *lock;
> >> + ktime_t now, etime, elapsed, add;
> >> + int expired;
> >> +
> >> + now = ktime_get();
> >> + elapsed = ktime_sub(now, last_sleep_time_update);
> >> + list_for_each_entry(lock, &active_wake_locks[WAKE_LOCK_SUSPEND], link) {
> >
> > Is this list opperation SMP safe? what if some on on the other CPU
> > removes a lock form user mode while walking this guy? this goes for all
> > your list walking.
>
> I have not tested the code on an SMP system, but the list is protected
> by a spinlock.
ok, I was just looking for it and didn't notice it in the calling code.
>
> >> +static void expire_wake_lock(struct wake_lock *lock)
> >> +{
> >> +#ifdef CONFIG_WAKELOCK_STAT
> >> + wake_unlock_stat_locked(lock, 1);
> >> +#endif
> >> + lock->flags &= ~(WAKE_LOCK_ACTIVE | WAKE_LOCK_AUTO_EXPIRE);
> >> + list_del(&lock->link);
> >> + list_add(&lock->link, &inactive_locks);
> >> + if (debug_mask & (DEBUG_WAKE_LOCK | DEBUG_EXPIRE))
> >> + pr_info("expired wake lock %s\n", lock->name);
> >> +}
> >
> > Are we missing locking for this list opperation?
>
> No.
ok.
>
> >> +static void suspend(struct work_struct *work)
> >
> > there are a lot of "suspend" functions in the kernel already that have
> > different calling semantics, can we change this name so my TAG file is
> > more sane?
>
> OK.
>
> >
> >> +{
> >> + int ret;
> >> + int entry_event_num;
> >> +
> >> + if (has_wake_lock(WAKE_LOCK_SUSPEND)) {
> >> + if (debug_mask & DEBUG_SUSPEND)
> >> + pr_info("suspend: abort suspend\n");
> >> + return;
> >> + }
> >> +
> >> + entry_event_num = current_event_num;
> >> + sys_sync();
> >
> > um, this feel wrong to me.
>
> Wrong or redundant? I can remove sys_sync here since pm_suspend calls it anyway.
its just a latency enhanced api call I wouldn't expect to see called.
>
> >
> >> + if (debug_mask & DEBUG_SUSPEND)
> >> + pr_info("suspend: enter suspend\n");
> >> + ret = pm_suspend(requested_suspend_state);
> >
> > oh, you are adding yet another path to getting the system into a
> > suspended state. is this necessary?
>
> Yes.
>
> >> +#ifdef CONFIG_WAKELOCK_STAT
> >> + create_proc_read_entry("wakelocks", S_IRUGO, NULL,
> >> + wakelocks_read_proc, NULL);
> >
> > Shouldn't we *not* be using /proc? I think this should be under sysfs.
>
> It is not allowed under sysfs. Debugfs has been suggested, but we
> don't have debugfs mounted, and we include the wakelock stats in debug
> reports.
>
why not under sysfs?
--mgross
next prev parent reply other threads:[~2009-02-07 0:33 UTC|newest]
Thread overview: 192+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-05 2:50 [RFC][PATCH 00/11] Android PM extensions Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 01/13] PM: Add wake lock api Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 02/13] PM: Add early suspend api Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 03/13] PM: Implement wakelock api Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 04/13] PM: wakelock: Override wakelocks when using /sys/power/state Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 05/13] PM: Add option to disable /sys/power/state interface Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 06/13] PM: Implement early suspend api Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 07/13] PM: wakelock: Add /sys/power/request_state Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 08/13] PM: Add user-space wake lock api Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 09/13] PM: wakelock: Abort task freezing if a wake lock is held Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 10/13] PM: earlysuspend: Add console switch when user requested sleep state changes Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 11/13] PM: earlysuspend: Removing dependence on console Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 12/13] Input: Hold wake lock while event queue is not empty Arve Hjønnevåg
2009-02-05 2:50 ` [PATCH 13/13] ledtrig-sleep: Add led trigger for sleep debugging Arve Hjønnevåg
2009-02-05 9:08 ` [PATCH 12/13] Input: Hold wake lock while event queue is not empty Pavel Machek
2009-02-05 9:06 ` [PATCH 11/13] PM: earlysuspend: Removing dependence on console Pavel Machek
2009-02-05 9:42 ` Arve Hjønnevåg
2009-02-05 9:53 ` Pavel Machek
2009-02-05 9:03 ` [PATCH 10/13] PM: earlysuspend: Add console switch when user requested sleep state changes Pavel Machek
2009-02-05 9:37 ` Arve Hjønnevåg
2009-02-05 9:51 ` Pavel Machek
2009-02-05 10:54 ` Uli Luckas
2009-02-06 2:29 ` Arve Hjønnevåg
2009-02-08 22:02 ` Pavel Machek
2009-02-08 22:53 ` Arve Hjønnevåg
2009-02-08 22:58 ` Pavel Machek
2009-02-05 8:55 ` [PATCH 09/13] PM: wakelock: Abort task freezing if a wake lock is held Pavel Machek
2009-02-05 9:30 ` Arve Hjønnevåg
2009-02-05 9:49 ` Pavel Machek
2009-02-05 9:58 ` Arve Hjønnevåg
2009-02-05 10:02 ` Pavel Machek
2009-02-05 10:08 ` Arve Hjønnevåg
2009-02-06 3:42 ` Arve Hjønnevåg
2009-02-08 23:00 ` Pavel Machek
2009-02-06 0:35 ` mark gross
2009-02-05 8:53 ` [PATCH 08/13] PM: Add user-space wake lock api Pavel Machek
2009-02-05 8:52 ` [PATCH 07/13] PM: wakelock: Add /sys/power/request_state Pavel Machek
2009-02-05 9:25 ` Arve Hjønnevåg
2009-02-05 9:27 ` Pavel Machek
2009-02-07 22:54 ` Rafael J. Wysocki
2009-02-06 0:18 ` [PATCH 06/13] PM: Implement early suspend api mark gross
2009-02-07 22:47 ` Rafael J. Wysocki
2009-02-08 2:32 ` Benjamin Herrenschmidt
2009-02-08 13:33 ` Rafael J. Wysocki
2009-02-05 9:17 ` [PATCH 05/13] PM: Add option to disable /sys/power/state interface Pavel Machek
2009-02-07 22:37 ` Rafael J. Wysocki
2009-02-08 10:33 ` Pavel Machek
2009-02-08 13:50 ` Rafael J. Wysocki
2009-02-08 14:04 ` Brian Swetland
2009-02-08 21:06 ` Pavel Machek
2009-02-08 23:41 ` Rafael J. Wysocki
2009-02-09 1:58 ` Uli Luckas
2009-02-10 0:09 ` Rafael J. Wysocki
2009-02-08 23:40 ` Rafael J. Wysocki
2009-02-08 23:58 ` Arve Hjønnevåg
2009-02-09 0:26 ` Rafael J. Wysocki
2009-02-09 1:35 ` Arve Hjønnevåg
2009-02-09 1:53 ` Brian Swetland
2009-02-09 8:58 ` Pavel Machek
2009-02-09 13:31 ` Brian Swetland
2009-02-10 11:19 ` Pavel Machek
2009-02-09 9:15 ` Pavel Machek
2009-02-09 3:07 ` Alan Stern
2009-02-11 22:26 ` Rafael J. Wysocki
2009-02-09 9:09 ` Pavel Machek
2009-02-12 11:16 ` Matthew Garrett
2009-02-08 21:04 ` Pavel Machek
2009-02-08 21:40 ` Alan Stern
2009-02-08 23:00 ` Arve Hjønnevåg
2009-02-08 23:03 ` Pavel Machek
2009-02-09 0:31 ` Rafael J. Wysocki
2009-02-09 2:11 ` Uli Luckas
2009-02-09 2:24 ` Arve Hjønnevåg
2009-02-09 2:56 ` Uli Luckas
2009-02-09 9:01 ` Pavel Machek
2009-02-10 0:17 ` Rafael J. Wysocki
2009-02-10 9:13 ` Pavel Machek
2009-02-10 14:18 ` Rafael J. Wysocki
2009-02-08 23:41 ` Pavel Machek
2009-02-08 23:44 ` Rafael J. Wysocki
2009-02-08 23:44 ` Rafael J. Wysocki
2009-02-07 22:31 ` [PATCH 04/13] PM: wakelock: Override wakelocks when using /sys/power/state Rafael J. Wysocki
2009-02-05 9:16 ` [PATCH 03/13] PM: Implement wakelock api Pavel Machek
2009-02-05 15:24 ` Alan Stern
2009-02-06 0:10 ` mark gross
2009-02-06 0:38 ` Arve Hjønnevåg
2009-02-07 0:33 ` mark gross [this message]
2009-02-07 0:47 ` Arve Hjønnevåg
2009-02-09 18:00 ` mark gross
2009-02-10 20:24 ` Pavel Machek
2009-02-07 22:27 ` Rafael J. Wysocki
2009-02-11 2:52 ` Arve Hjønnevåg
2009-02-05 9:14 ` [PATCH 02/13] PM: Add early suspend api Pavel Machek
2009-02-05 23:26 ` mark gross
2009-02-06 9:33 ` Uli Luckas
2009-02-06 23:26 ` Arve Hjønnevåg
2009-02-07 20:53 ` Rafael J. Wysocki
2009-02-07 23:34 ` Arve Hjønnevåg
2009-02-08 20:59 ` Pavel Machek
2009-02-08 23:59 ` Rafael J. Wysocki
2009-02-05 9:11 ` [PATCH 01/13] PM: Add wake lock api Pavel Machek
2009-02-06 0:28 ` Arve Hjønnevåg
2009-02-06 9:45 ` Uli Luckas
2009-02-08 21:30 ` Pavel Machek
2009-02-08 23:11 ` Arve Hjønnevåg
2009-02-09 9:06 ` Pavel Machek
2009-02-08 22:17 ` non-racy examples, please (was Re: [PATCH 01/13] PM: Add wake lock api.) Pavel Machek
2009-02-08 22:40 ` Arve Hjønnevåg
2009-02-08 23:14 ` Pavel Machek
2009-02-08 23:35 ` Arve Hjønnevåg
2009-02-10 11:15 ` Pavel Machek
2009-02-11 3:12 ` Arve Hjønnevåg
2009-02-09 1:49 ` non-racy examples, please (was Re: [PATCH 01/13] PM: Add wake lock api. ) Uli Luckas
2009-02-10 11:17 ` non-racy examples, please (was Re: [PATCH 01/13] PM: Add wake lock?api.) Pavel Machek
2009-02-10 12:10 ` Woodruff, Richard
2009-02-10 13:14 ` Pavel Machek
2009-02-10 13:20 ` Woodruff, Richard
2009-02-10 13:42 ` Brian Swetland
2009-02-10 12:35 ` Uli Luckas
2009-02-06 1:32 ` [PATCH 01/13] PM: Add wake lock api mark gross
2009-02-05 22:51 ` mark gross
2009-02-06 0:13 ` Arve Hjønnevåg
2009-02-10 20:25 ` Pavel Machek
2009-02-11 2:11 ` Arve Hjønnevåg
2009-02-11 4:47 ` Brian Swetland
2009-02-11 8:40 ` Uli Luckas
2009-02-11 14:58 ` Alan Stern
2009-02-11 15:45 ` Rafael J. Wysocki
2009-02-08 22:57 ` Pavel Machek
2009-02-11 21:37 ` Pavel Machek
2009-02-11 22:05 ` Alan Stern
2009-02-11 23:55 ` Arve Hjønnevåg
2009-02-12 18:47 ` mark gross
2009-02-07 18:56 ` Rafael J. Wysocki
2009-02-07 22:51 ` Arve Hjønnevåg
2009-02-07 23:25 ` Rafael J. Wysocki
2009-02-08 0:20 ` Arve Hjønnevåg
2009-02-08 21:21 ` Pavel Machek
2009-02-09 0:03 ` Rafael J. Wysocki
2009-02-09 0:15 ` Rafael J. Wysocki
2009-02-09 2:03 ` Arve Hjønnevåg
2009-02-11 22:23 ` Rafael J. Wysocki
2009-02-11 23:42 ` Arve Hjønnevåg
2009-02-12 22:22 ` Rafael J. Wysocki
2009-02-12 23:42 ` Woodruff, Richard
2009-02-13 1:10 ` Matthew Garrett
2009-02-13 2:21 ` Arve Hjønnevåg
2009-02-13 2:40 ` Nigel Cunningham
2009-02-13 3:17 ` Woodruff, Richard
2009-02-13 10:55 ` Uli Luckas
2009-02-13 14:06 ` Matthew Garrett
2009-02-13 14:24 ` Brian Swetland
2009-02-13 14:37 ` Matthew Garrett
2009-02-13 14:46 ` Brian Swetland
2009-02-13 15:07 ` Matthew Garrett
2009-02-13 22:52 ` Rafael J. Wysocki
2009-02-13 16:46 ` Uli Luckas
2009-02-13 17:05 ` Matthew Garrett
2009-02-13 18:13 ` Uli Luckas
2009-02-13 19:14 ` Matthew Garrett
2009-02-13 19:35 ` Uli Luckas
2009-02-13 16:49 ` Uli Luckas
2009-02-13 17:09 ` Matthew Garrett
2009-02-13 18:18 ` Uli Luckas
2009-02-27 13:18 ` Pavel Machek
2009-02-27 14:07 ` Uli Luckas
2009-02-27 20:32 ` Pavel Machek
2009-03-02 13:53 ` Uli Luckas
2009-03-03 14:02 ` Pavel Machek
2009-03-04 13:41 ` Uli Luckas
2009-03-04 14:00 ` Uli Luckas
2009-03-04 14:13 ` Pavel Machek
2009-03-04 14:34 ` Uli Luckas
2009-03-04 17:10 ` Pavel Machek
2009-03-05 17:42 ` Uli Luckas
2009-03-08 8:32 ` Pavel Machek
2009-03-08 12:34 ` Alan Stern
2009-02-13 23:36 ` Arve Hjønnevåg
2009-02-14 0:05 ` Matthew Garrett
2009-02-14 0:50 ` Arve Hjønnevåg
2009-02-14 1:06 ` Matthew Garrett
2009-02-14 1:33 ` Arve Hjønnevåg
2009-02-14 1:49 ` Matthew Garrett
2009-02-14 5:51 ` Arve Hjønnevåg
2009-02-14 20:44 ` Matthew Garrett
2009-02-26 15:04 ` Pavel Machek
2009-02-26 21:11 ` Arve Hjønnevåg
2009-02-26 21:36 ` Pavel Machek
2009-02-27 0:16 ` Arve Hjønnevåg
2009-02-27 9:56 ` Pavel Machek
2009-02-28 3:20 ` Arve Hjønnevåg
2009-02-06 23:51 ` [RFC][PATCH 00/11] Android PM extensions 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=20090207003334.GA13923@linux.intel.com \
--to=mgross@linux.intel.com \
--cc=arve@android.com \
--cc=linux-pm@lists.linux-foundation.org \
--cc=ncunningham@crca.org.au \
--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