All of lore.kernel.org
 help / color / mirror / Atom feed
From: mark gross <mgross@linux.intel.com>
To: "Arve Hjønnevåg" <arve@android.com>
Cc: ncunningham@crca.org.au, u.luckas@road.de, swetland@google.com,
	linux-pm@lists.linux-foundation.org
Subject: Re: [PATCH 1/8] PM: Add suspend block api.
Date: Thu, 16 Apr 2009 10:49:27 -0700	[thread overview]
Message-ID: <20090416174927.GA2846@linux.intel.com> (raw)
In-Reply-To: <d6200be20904151845h4d6c27a0t771623ef3330ae8b@mail.gmail.com>

On Wed, Apr 15, 2009 at 06:45:00PM -0700, Arve Hjønnevåg wrote:
> 2009/4/15 mark gross <mgross@linux.intel.com>:
> > I'm sure you are sick of this question, but couldn't you do this same
> > functionality (constraining entry to Suspend) using existing
> > infrastructure.  You are clearly aggregating a block-count and triggering
> > on an zero aggregate value to enter Suspend.
> 
> The only reason I have a block count, is that the feedback on this
> list was that it is too expensive to use a spin-lock every time we
> want to block or unblock suspend. The later patches that enable stats
> and timeout support uses inactive and active lists instead.
> 
> >
> > I'm thinking you could do something like CPUIDLE to push the implicit
> > suspend call and use a new pmqos parameter to keep the system alive.
> > We'd have to look at the API to make sure it would work in interrupt
> > mode.
> >
> > The only thing I got from the earlier threads asking why not PMQOS, was
> > some complaint about the strcmp the constraint aggregation does WRT
> > performance.  I don't think it would be too hard to address the perceived
> > performance issue (even if its yet to be proven as an issue anywhere)
> 
> There was a question about why we did not use pmqos instead othe the
> idle wake locks. One reason was that we mainly needed to prevent a
> specific state to not loose interrupts, not because the latency was
> too high. The other reason was that the pm qos interface uses strings
> instead of handles. Using strings to search to a list for the item you
> want to update has an impact on performance that is not hard to
> measure, but it also require the clients to create unique strings.

really?  How many times / second was your system changing the pmqos
parameter?  If that turns out to be realistic, non-abusive use of the api
then perhaps I need to migrate pmqos to include / use handles.  

when pmqos was designed we assumed it wouldn't be hit with high
parameter change rates.  What could be a realistic upper bound on
change rate for the parameters?

> 
> > FWIW there is some talk of re-factoring some of pmqos to sit on top of a
> > constraint framework (to generalize the code a little and support
> > constraining things that are not really measurable in terms of latencies
> > or throughputs)
> >
> 
> That should help with replacing the idle-wake-locks.
> 
> > anyway a few comments below.
> >
> > On Tue, Apr 14, 2009 at 06:41:25PM -0700, Arve Hjønnevåg wrote:
> >> Adds /sys/power/request_state, a non-blocking interface that specifies
> >> which suspend state to enter when no suspend blockers are active. A
> >> special state, "on", stops the process by activating the "main" suspend
> >> blocker.
> >>
> >> Signed-off-by: Arve Hjønnevåg <arve@android.com>
> >> ---
> >>  Documentation/power/suspend-blockers.txt |   76 +++++++++
> >>  include/linux/suspend_block.h            |   61 +++++++
> >>  kernel/power/Kconfig                     |   10 ++
> >>  kernel/power/Makefile                    |    1 +
> >>  kernel/power/main.c                      |   62 +++++++
> >>  kernel/power/power.h                     |    6 +
> >>  kernel/power/suspend_block.c             |  257 ++++++++++++++++++++++++++++++
> >>  7 files changed, 473 insertions(+), 0 deletions(-)
> >>  create mode 100644 Documentation/power/suspend-blockers.txt
> >>  create mode 100755 include/linux/suspend_block.h
> >>  create mode 100644 kernel/power/suspend_block.c
> >>
> >> diff --git a/Documentation/power/suspend-blockers.txt b/Documentation/power/suspend-blockers.txt
> >> new file mode 100644
> >> index 0000000..743b870
> >> --- /dev/null
> >> +++ b/Documentation/power/suspend-blockers.txt
> >> @@ -0,0 +1,76 @@
> >> +Suspend blockers
> >> +================
> >> +
> >> +A suspend_blocker prevents the system from entering suspend.
> >
> > And trigger implicit entry into suspend when last blocker is released.
> >
> >> +
> >> +If the suspend operation has already started when calling suspend_block on a
> >> +suspend_blocker, it will abort the suspend operation as long it has not already
> >> +reached the sysdev suspend stage. This means that calling suspend_block from an
> >> +interrupt handler or a freezeable thread always works, but if you call
> >> +block_suspend from a sysdev suspend handler you must also return an error from
> >> +that handler to abort suspend.
> >> +
> >> +Suspend blockers can be used to allow user-space to decide which keys should
> >> +wake the full system up and turn the screen on.
> >
> > Provided the user mode process controlling the screen power is in the calling
> > path of user-space input-event thread.
> 
> What you mean by this? Our user-space input event thread does not turn
> the screen on, but translates the events and queues the translated
> event on another queue. As long as all queues are protected by a
> suspend blocker, there is no requirement about which thread turns the
> screen on.

I mean that to enable the promised partial system wake up ( "Suspend
blockers can be used to allow user-space to decide which keys should
wake the full system up and turn the screen on.") there is more to the
story as this API is about system level pm not device PM needed to keep
the screen off while partially waking things up before suspending again.

Perhaps an explanation on how suspend blocker can be used to partially
wake up a system without the screen coming on would help me.  Right now
I'm not seeing how that can be implemented in the context of this patch.


 
> >
> > Basically it should be made clear that this is not a device PM
> > implementation.  Its a global system suspend constraint system, where
> > the count of blockers is aggregated in a static variable,
> > suspend_block_count, within suspend_block.c  with implicit suspend
> > called when block count gets to zero.
> >
> > i.e. only useful in platform specific code for platforms that can do
> > ~10ms suspends and resumes.
> 
> I disagree. If I have a desktop system that takes 5 seconds to wake up
> from sleep, I still want the ability to auto suspend after user
> inactivity, and to prevent suspend while some tasks are running.

I guess we have this now, but the user mode implementations don't scale
to low latency and frequent suspend applications.


--mgross


> >
> >> Use set_irq_wake or a platform
> >> +specific api to make sure the keypad interrupt wakes up the cpu. Once the keypad
> >> +driver has resumed, the sequence of events can look like this:
> >> +- The Keypad driver gets an interrupt. It then calls suspend_block on the
> >> +  keypad-scan suspend_blocker and starts scanning the keypad matrix.
> > count = 1
> >> +- The keypad-scan code detects a key change and reports it to the input-event
> >> +  driver.
> >> +- The input-event driver sees the key change, enqueues an event, and calls
> >> +  suspend_block on the input-event-queue suspend_blocker.
> > count = 2
> >> +- The keypad-scan code detects that no keys are held and calls suspend_unblock
> >> +  on the keypad-scan suspend_blocker.
> > count = 1
> >> +- The user-space input-event thread returns from select/poll, calls
> >> +  suspend_block on the process-input-events suspend_blocker and then calls read
> >> +  on the input-event device.
> > count = 2
> >> +- The input-event driver dequeues the key-event and, since the queue is now
> >> +  empty, it calls suspend_unblock on the input-event-queue suspend_blocker.
> > count = 1
> >> +- The user-space input-event thread returns from read. It determines that the
> >> +  key should not wake up the full system, calls suspend_unblock on the
> >> +  process-input-events suspend_blocker and calls select or poll.
> > count = 0 + race between dropping into Suspend state and the execution
> > of the select or poll.  (should probably be ok)
> 
> This is not a race condition, select or poll does not affect the
> suspend blocker in the input driver to it does not matter if the poll
> is called before or after suspend.
> 
> >
> >> +
> >> +                 Key pressed   Key released
> >> +                     |             |
> >> +keypad-scan          ++++++++++++++++++
> >> +input-event-queue        +++          +++
> >> +process-input-events       +++          +++
> >> +
> >> +
> 
> >> +struct suspend_blocker {
> >> +#ifdef CONFIG_SUSPEND_BLOCK
> >> +     atomic_t            flags;
> >> +     const char         *name;
> >> +#endif
> >> +};
> >> +
> ...
> >> +
> >> +#define SB_INITIALIZED            (1U << 8)
> >> +#define SB_ACTIVE                 (1U << 9)
> >> +
> >> +static DEFINE_SPINLOCK(state_lock);
> >> +static atomic_t suspend_block_count;
> >
> > So if suspend_block_count is the lynch pin of the design, why have all
> > the suspend_blocker structs?  Why have all the logic around the
> > different suspend blocker instances?
> 
> The suspend block structs need to be part of the api to allow stats
> and/or debugging. It also ensures that a single suspend_blocker does
> not change the global count by more than one. Also,
> suspend_block_count is not part of the design, it is an optimization
> that becomes useless when you enable stats.
> 
> >
> > It seems like a lot of extra effort for an atomic "stay awake" counter.
> >
> 
> 
> -- 
> Arve Hjønnevåg

  reply	other threads:[~2009-04-16 17:49 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-15  1:41 [RFC][PATCH 0/8] Suspend block api Arve Hjønnevåg
2009-04-15  1:41 ` [PATCH 1/8] PM: Add suspend " Arve Hjønnevåg
2009-04-15  1:41   ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2009-04-15  1:41     ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Arve Hjønnevåg
2009-04-15  1:41       ` [PATCH 4/8] Input: Block suspend while event queue is not empty Arve Hjønnevåg
2009-04-15  1:41         ` [PATCH 5/8] PM: suspend_block: Switch to list of active and inactive suspend blockers Arve Hjønnevåg
2009-04-15  1:41           ` [PATCH 6/8] PM: suspend_block: Add suspend_blocker stats Arve Hjønnevåg
2009-04-15  1:41             ` [PATCH 7/8] PM: suspend_block: Add timeout support Arve Hjønnevåg
2009-04-15  1:41               ` [PATCH 8/8] PM: suspend_block: Add timeout support to user-space suspend_blockers Arve Hjønnevåg
2009-04-29 22:56       ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Rafael J. Wysocki
2009-04-29 22:52     ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Rafael J. Wysocki
2009-04-15 15:29   ` [PATCH 1/8] PM: Add suspend block api Alan Stern
2009-04-15 19:08     ` mark gross
2009-04-16  0:40       ` Arve Hjønnevåg
2009-04-16  0:34     ` Arve Hjønnevåg
2009-04-15 22:31   ` mark gross
2009-04-16  1:45     ` Arve Hjønnevåg
2009-04-16 17:49       ` mark gross [this message]
2009-04-20  9:29   ` Pavel Machek
2009-04-21  4:44     ` Arve Hjønnevåg
2009-04-24 20:59       ` Pavel Machek
2009-04-29 21:24         ` Rafael J. Wysocki
2009-04-29 22:52           ` Arve Hjønnevåg
2009-04-29 22:34   ` Rafael J. Wysocki
2009-04-29 23:45     ` Arve Hjønnevåg
2009-04-30  0:49     ` Arve Hjønnevåg
2009-04-26  9:42       ` Pavel Machek
2009-05-02 12:17         ` Rafael J. Wysocki
2009-05-02 12:14       ` Rafael J. Wysocki
2009-05-02 20:51         ` Pavel Machek
2009-05-05  3:48         ` Arve Hjønnevåg
2009-04-15 23:04 ` [RFC][PATCH 0/8] Suspend " Rafael J. Wysocki
2009-04-16  6:00 [PATCH 1/8] PM: Add suspend " Sam Shang
2010-04-28  4:31 [PATCH 0/9] Suspend block api (version 5) Arve Hjønnevåg
2010-04-28  4:31 ` [PATCH 1/8] PM: Add suspend block api Arve Hjønnevåg
2010-04-28  4:31 ` Arve Hjønnevåg
2010-04-28  6:07   ` Pavel Machek
2010-04-28  6:07     ` Pavel Machek
2010-04-28 19:13   ` Alan Stern
2010-04-28 21:13     ` Rafael J. Wysocki
2010-04-28 21:13     ` Rafael J. Wysocki
2010-04-28 23:35       ` Arve Hjønnevåg
2010-04-28 23:35       ` Arve Hjønnevåg
2010-04-29 15:41         ` Alan Stern
2010-04-29 15:41           ` Alan Stern
2010-04-29 23:39           ` Arve Hjønnevåg
2010-04-29 23:39             ` Arve Hjønnevåg
2010-04-30 14:41             ` Alan Stern
2010-04-30 14:41               ` Alan Stern
2010-04-28 19:13   ` Alan Stern
2010-04-28 20:50   ` Rafael J. Wysocki
2010-04-28 20:50   ` Rafael J. Wysocki
2010-04-29  3:37     ` Arve Hjønnevåg
2010-04-29 21:16       ` Rafael J. Wysocki
2010-04-29 21:16         ` Rafael J. Wysocki
2010-04-30  4:24         ` Tejun Heo
2010-04-30  4:24           ` Tejun Heo
2010-04-30 17:26           ` Oleg Nesterov
2010-04-30 17:26           ` Oleg Nesterov
2010-05-20  8:30             ` Tejun Heo
2010-05-20 22:27               ` Rafael J. Wysocki
2010-05-21  6:35                 ` Tejun Heo
2010-05-21  6:35                   ` Tejun Heo
2010-05-20 22:27               ` Rafael J. Wysocki
2010-05-20  8:30             ` Tejun Heo
2010-04-29  3:37     ` Arve Hjønnevåg
2010-05-06 15:18   ` Alan Stern
2010-05-06 15:18   ` Alan Stern
2010-05-06 19:28     ` Rafael J. Wysocki
2010-05-06 19:28     ` Rafael J. Wysocki
2010-05-06 19:40       ` Alan Stern
2010-05-06 19:40       ` Alan Stern
2010-05-06 23:48         ` Arve Hjønnevåg
2010-05-06 23:48         ` Arve Hjønnevåg
2010-05-07 14:22           ` Alan Stern
2010-05-07 14:22           ` Alan Stern
2010-04-30 22:36 [PATCH 0/8] Suspend block api (version 6) Arve Hjønnevåg
2010-04-30 22:36 ` [PATCH 1/8] PM: Add suspend block api Arve Hjønnevåg
2010-04-30 22:36 ` Arve Hjønnevåg
2010-05-02  6:56   ` Pavel Machek
2010-05-02  6:56   ` Pavel Machek
2010-05-02 20:10     ` Rafael J. Wysocki
2010-05-02 20:52       ` Pavel Machek
2010-05-02 21:29         ` Rafael J. Wysocki
2010-05-02 21:29         ` Rafael J. Wysocki
2010-05-03 19:01           ` Pavel Machek
2010-05-03 21:38             ` Rafael J. Wysocki
2010-05-03 21:38             ` Rafael J. Wysocki
2010-05-03 22:11               ` Alan Stern
2010-05-03 22:11               ` Alan Stern
2010-05-03 22:24                 ` Arve Hjønnevåg
2010-05-03 22:24                 ` Arve Hjønnevåg
2010-05-03 19:01           ` Pavel Machek
2010-05-02 20:52       ` Pavel Machek
2010-05-02 20:10     ` Rafael J. Wysocki
2010-05-02  7:01   ` Pavel Machek
2010-05-02  7:01   ` Pavel Machek
2010-05-04  5:12   ` [linux-pm] " mark gross
2010-05-04 13:59     ` Alan Stern
2010-05-04 13:59     ` [linux-pm] " Alan Stern
2010-05-04 16:03       ` mark gross
2010-05-04 20:40     ` Arve Hjønnevåg
2010-05-04  5:12   ` mark gross
2010-05-13 19:01   ` Paul Walmsley
2010-05-14 20:05     ` Paul Walmsley
2010-05-04 16:03 [linux-pm] " mark gross
2010-05-04 17:16 ` Alan Stern
2010-05-05  1:50   ` mark gross
2010-05-05 13:31     ` Matthew Garrett
2010-05-05 20:09       ` mark gross
2010-05-05 20:21         ` Matthew Garrett
2010-05-05 20:09       ` mark gross
2010-05-05 13:31     ` Matthew Garrett
2010-05-05 15:44     ` Alan Stern
2010-05-05 15:44     ` [linux-pm] " Alan Stern
2010-05-05 20:28       ` mark gross
2010-05-05  1:50   ` mark gross
2010-05-04 17:16 ` Alan Stern
2010-05-05 20:28 [linux-pm] " mark gross
2010-05-05 21:12 ` Alan Stern
2010-05-05 21:37   ` Brian Swetland
2010-05-05 23:47     ` Tony Lindgren
2010-05-05 23:47     ` [linux-pm] " Tony Lindgren
2010-05-05 23:56       ` Brian Swetland
2010-05-06  0:05         ` Tony Lindgren
2010-05-06  4:16           ` Arve Hjønnevåg
2010-05-06 17:04             ` Tony Lindgren
2010-05-07  0:10               ` Arve Hjønnevåg
2010-05-07 15:54                 ` Tony Lindgren
2010-05-28  6:43                 ` Pavel Machek
2010-05-28  6:43                 ` [linux-pm] " Pavel Machek
2010-05-28  7:01                   ` Arve Hjønnevåg
2010-05-07  0:10               ` Arve Hjønnevåg
2010-05-06 17:04             ` Tony Lindgren
2010-05-06  4:16           ` Arve Hjønnevåg
2010-05-06  0:05         ` Tony Lindgren
2010-05-05 23:56       ` Brian Swetland
2010-05-06 13:40       ` Matthew Garrett
2010-05-06 13:40       ` [linux-pm] " Matthew Garrett
2010-05-06 17:01         ` Tony Lindgren
2010-05-06 17:01         ` [linux-pm] " Tony Lindgren
2010-05-06 17:09           ` Matthew Garrett
2010-05-06 17:09           ` [linux-pm] " Matthew Garrett
2010-05-06 17:14             ` Tony Lindgren
2010-05-06 17:22               ` Matthew Garrett
2010-05-06 17:38                 ` Tony Lindgren
2010-05-06 17:38                 ` [linux-pm] " Tony Lindgren
2010-05-06 17:43                   ` Matthew Garrett
2010-05-06 18:33                     ` Tony Lindgren
2010-05-06 18:33                     ` [linux-pm] " Tony Lindgren
2010-05-06 18:44                       ` Matthew Garrett
2010-05-07  2:05                         ` Tony Lindgren
2010-05-07  2:05                         ` [linux-pm] " Tony Lindgren
2010-05-07 17:12                           ` Matthew Garrett
2010-05-07 17:35                             ` Tony Lindgren
2010-05-07 17:35                             ` [linux-pm] " Tony Lindgren
2010-05-07 17:50                               ` Matthew Garrett
2010-05-07 18:01                                 ` Tony Lindgren
2010-05-07 18:01                                 ` [linux-pm] " Tony Lindgren
2010-05-07 18:28                                   ` Matthew Garrett
2010-05-07 18:43                                     ` Tony Lindgren
2010-05-07 18:46                                       ` Matthew Garrett
2010-05-07 18:46                                       ` [linux-pm] " Matthew Garrett
2010-05-07 19:06                                         ` Daniel Walker
2010-05-07 19:06                                         ` [linux-pm] " Daniel Walker
2010-05-07 19:28                                           ` Tony Lindgren
2010-05-07 19:33                                             ` Matthew Garrett
2010-05-07 19:33                                             ` [linux-pm] " Matthew Garrett
2010-05-07 19:55                                               ` Tony Lindgren
2010-05-07 20:28                                                 ` Matthew Garrett
2010-05-07 20:28                                                 ` [linux-pm] " Matthew Garrett
2010-05-07 20:53                                                   ` Tony Lindgren
2010-05-07 20:53                                                   ` [linux-pm] " Tony Lindgren
2010-05-07 21:03                                                     ` Matthew Garrett
2010-05-07 21:25                                                       ` Tony Lindgren
2010-05-07 21:25                                                       ` [linux-pm] " Tony Lindgren
2010-05-07 21:32                                                         ` Arve Hjønnevåg
2010-05-07 21:39                                                         ` Matthew Garrett
2010-05-07 21:39                                                         ` [linux-pm] " Matthew Garrett
2010-05-07 21:42                                                           ` Tony Lindgren
2010-05-07 21:42                                                           ` [linux-pm] " Tony Lindgren
2010-05-07 21:48                                                             ` Matthew Garrett
2010-05-07 22:00                                                               ` Tony Lindgren
2010-05-07 22:00                                                               ` [linux-pm] " Tony Lindgren
2010-05-07 22:28                                                                 ` Matthew Garrett
2010-05-07 21:48                                                             ` Matthew Garrett
2010-05-07 21:30                                                       ` Daniel Walker
2010-05-07 21:30                                                       ` [linux-pm] " Daniel Walker
2010-05-07 21:35                                                         ` Arve Hjønnevåg
2010-05-07 21:43                                                           ` Daniel Walker
2010-05-07 21:35                                                         ` Arve Hjønnevåg
2010-05-07 21:38                                                         ` Matthew Garrett
2010-05-07 21:03                                                     ` Matthew Garrett
2010-05-07 19:55                                               ` Tony Lindgren
2010-05-07 19:28                                           ` Tony Lindgren
2010-05-07 18:28                                   ` Matthew Garrett
2010-05-07 17:50                               ` Matthew Garrett
2010-05-07 17:12                           ` Matthew Garrett
2010-05-06 18:44                       ` Matthew Garrett
2010-05-06 18:47                       ` Alan Stern
2010-05-06 18:47                       ` [linux-pm] " Alan Stern
2010-05-07  2:20                         ` Tony Lindgren
2010-05-06 17:43                   ` Matthew Garrett
2010-05-28 13:29                   ` [linux-pm] " Pavel Machek
2010-05-28 13:42                     ` Brian Swetland
2010-05-28 13:29                   ` Pavel Machek
2010-05-06 17:22               ` Matthew Garrett
2010-05-06 17:35               ` [linux-pm] " Daniel Walker
2010-05-06 18:36                 ` Tony Lindgren
2010-05-06 19:11                   ` Daniel Walker
2010-05-07  2:00                     ` Tony Lindgren
2010-05-07  2:00                     ` [linux-pm] " Tony Lindgren
2010-05-07 17:20                       ` Daniel Walker
2010-05-07 17:36                         ` Matthew Garrett
2010-05-07 17:36                         ` [linux-pm] " Matthew Garrett
2010-05-07 17:40                           ` Daniel Walker
2010-05-07 17:51                             ` Matthew Garrett
2010-05-07 17:51                             ` [linux-pm] " Matthew Garrett
2010-05-07 18:00                               ` Daniel Walker
2010-05-07 18:17                                 ` Tony Lindgren
2010-05-07 18:00                               ` Daniel Walker
2010-05-07 17:40                           ` Daniel Walker
2010-05-07 17:50                         ` Tony Lindgren
2010-05-07 17:20                       ` Daniel Walker
2010-05-06 19:11                   ` Daniel Walker
2010-05-06 18:36                 ` Tony Lindgren
2010-05-06 17:35               ` Daniel Walker
2010-05-07  3:45               ` mgross
2010-05-06 17:14             ` Tony Lindgren
2010-05-07  3:45             ` [linux-pm] " mgross
2010-05-07  4:10               ` Arve Hjønnevåg
2010-05-07  3:45             ` mgross
2010-05-05 21:37   ` Brian Swetland
2010-05-05 21:12 ` Alan Stern
2010-05-14  4:11 [PATCH 0/8] Suspend block api (version 7) Arve Hjønnevåg
2010-05-14  4:11 ` [PATCH 1/8] PM: Add suspend block api Arve Hjønnevåg
2010-05-14  4:11   ` Arve Hjønnevåg
2010-05-14  6:13   ` Paul Walmsley
2010-05-14  6:27   ` Paul Walmsley
2010-05-14  7:14     ` Arve Hjønnevåg
2010-05-18  2:17       ` Paul Walmsley
2010-05-18  3:06         ` Arve Hjønnevåg
2010-05-18  3:34           ` Paul Walmsley
2010-05-18  3:51             ` Arve Hjønnevåg
2010-05-19 15:55               ` Paul Walmsley
2010-05-20  0:35                 ` Arve Hjønnevåg
2010-05-18 13:11   ` Pavel Machek
2010-05-18 13:11   ` Pavel Machek
2010-05-20  9:11     ` Florian Mickler
2010-05-20  9:26       ` Florian Mickler
2010-05-20  9:26       ` Florian Mickler
2010-05-20 22:18         ` Rafael J. Wysocki
2010-05-20 22:18         ` Rafael J. Wysocki
2010-05-21  6:04           ` Florian Mickler
2010-05-21  6:04           ` Florian Mickler
2010-05-27 15:41           ` Pavel Machek
2010-05-27 15:41           ` Pavel Machek
2010-05-20  9:11     ` Florian Mickler

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=20090416174927.GA2846@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.