Re: [PATCH 0/8] Suspend block api (version 6)

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Kevin Hilman
Date: Monday, May 10, 2010 - 11:06 am

Hello,

I think many folks are still confused about exactly the problem being
solved by this series as well as mixed up between opportunistic
suspend and suspend blockers.  Also, how this series impatcs the rest
of the kernel (especially PM-aware drivers and subsystems) has caused
a bit of confusion.

To help with the confusion, I think a much clearer description of the
problem being solved and the proposed solution is needed.  

To that end, I created a starting point for that below which
summarizes how I understand the problem and the proposed solution, but
of course this should be filled out in more detail and updated as part
of the documentation that goes with this series.

Hope this helps improve the understanding of this feature,

Kevin



Table of Contents
=================
1 Problem Statement 
2 Solution: Opportunistic suspend 
    2.1 When to use a suspend blocker 
    2.2 Usage in PM aware drivers 


1 Problem Statement 
~~~~~~~~~~~~~~~~~~~~

Want to to hit deep power state, even when the system is not actually
idle.

Why?

- some hardware is not capable of deep power states in idle
- difficulty getting userspace and/or kernel to be idle

2 Solution: Opportunistic suspend 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Create an additional "idle path" which has new rules for determining
idleness.  When this new "idle" is reached, trigger full-system
suspend.  Since a suspend is triggered whenever the opportunity
arises, this is called opportunistic suspend.

The new rules for making the idleness decision are simple:

1.  system may suspend if and only if no suspend blockers are held

2.1 When to use a suspend blocker 
==================================

[A list of reasons why suspend blockers might be used would be very
 helpful here.] 

- ensure wakeup events propagate to userspace (e.g. keypad example in doc)

- screen is on

- someone mentioned "Google use cases"
  (would be nice to hear about more of these)

2.2 Usage in PM aware drivers 
==============================

[An example of how a driver already using runtime PM would use 
 a suspend blocker would also be helpful.

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/8] Suspend block api (version 6), =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 1/8] PM: Add suspend block api., =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 2/8] PM: suspend_block: Add driver to access suspen ..., =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 3/8] PM: suspend_block: Abort task freezing if a su ..., =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 4/8] PM: suspend_block: Add debugfs file, =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 5/8] PM: suspend_block: Add suspend_blocker stats, =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 6/8] PM: Add suspend blocking work., =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:36 pm)
[PATCH 7/8] Input: Block suspend while event queue is not ..., =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:37 pm)
[PATCH 8/8] power_supply: Block suspend while power supply ..., =?UTF-8?q?Arve=20Hj= ..., (Fri Apr 30, 3:37 pm)
Re: [PATCH 6/8] PM: Add suspend blocking work., Tejun Heo, (Fri Apr 30, 11:14 pm)
Re: [PATCH 1/8] PM: Add suspend block api., Pavel Machek, (Sat May 1, 11:56 pm)
Re: [PATCH 1/8] PM: Add suspend block api., Pavel Machek, (Sun May 2, 12:01 am)
Re: [PATCH 6/8] PM: Add suspend blocking work., Pavel Machek, (Sun May 2, 12:05 am)
Re: [PATCH 1/8] PM: Add suspend block api., Rafael J. Wysocki, (Sun May 2, 1:10 pm)
Re: [PATCH 1/8] PM: Add suspend block api., Pavel Machek, (Sun May 2, 1:52 pm)
Re: [PATCH 1/8] PM: Add suspend block api., Rafael J. Wysocki, (Sun May 2, 2:29 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Mon May 3, 9:40 am)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Mon May 3, 11:07 am)
Re: [PATCH 1/8] PM: Add suspend block api., Pavel Machek, (Mon May 3, 12:01 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Mon May 3, 2:18 pm)
Re: [PATCH 1/8] PM: Add suspend block api., Rafael J. Wysocki, (Mon May 3, 2:38 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Mon May 3, 2:50 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Mon May 3, 4:37 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Arve Hjønnevåg, (Mon May 3, 5:09 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Mon May 3, 5:43 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Mon May 3, 5:43 pm)
Re: [PATCH 4/8] PM: suspend_block: Add debugfs file, Andi Kleen, (Tue May 4, 4:16 am)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Tue May 4, 6:59 am)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Tue May 4, 8:13 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Tue May 4, 8:28 am)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Tue May 4, 11:04 am)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Tue May 4, 11:06 am)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Tue May 4, 12:06 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Tue May 4, 1:23 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Tue May 4, 1:37 pm)
Re: [linux-pm] [PATCH 1/8] PM: Add suspend block api., Arve Hjønnevåg, (Tue May 4, 1:40 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Tue May 4, 1:44 pm)
Re: [PATCH 4/8] PM: suspend_block: Add debugfs file, Arve Hjønnevåg, (Tue May 4, 2:06 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Tue May 4, 4:14 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Tue May 4, 4:42 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Tue May 4, 4:56 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Tue May 4, 5:22 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Tue May 4, 6:11 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Wed May 5, 4:06 am)
Re: [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Wed May 5, 5:00 am)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Wed May 5, 6:56 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Wed May 5, 10:33 am)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Wed May 5, 11:39 am)
Re: [PATCH 0/8] Suspend block api (version 6), mark gross, (Wed May 5, 1:35 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Kevin Hilman, (Mon May 10, 11:06 am)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Mon May 10, 1:25 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Tony Lindgren, (Tue May 11, 9:12 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Tue May 11, 9:14 am)
Re: [PATCH 0/8] Suspend block api (version 6), Tony Lindgren, (Tue May 11, 9:36 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Tue May 11, 9:45 am)
Re: [PATCH 0/8] Suspend block api (version 6), Tony Lindgren, (Tue May 11, 9:58 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Tue May 11, 10:03 am)
Re: [PATCH 0/8] Suspend block api (version 6), Tony Lindgren, (Tue May 11, 10:24 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Tue May 11, 10:30 am)
Re: [PATCH 0/8] Suspend block api (version 6), Tony Lindgren, (Tue May 11, 10:48 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Tue May 11, 11:01 am)
Re: [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Tue May 11, 11:19 am)
Re: [PATCH 0/8] Suspend block api (version 6), Arve Hjønnevåg, (Tue May 11, 6:11 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Mark Brown, (Wed May 12, 4:22 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Paul Walmsley, (Wed May 12, 8:35 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Thu May 13, 5:17 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Thu May 13, 10:33 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Thu May 13, 11:17 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Thu May 13, 11:25 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Thu May 13, 11:36 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Thu May 13, 11:59 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Thu May 13, 12:11 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Thu May 13, 12:36 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Thu May 13, 12:48 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Thu May 13, 2:11 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Thu May 13, 2:16 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Thu May 13, 2:27 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Thu May 13, 2:33 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Tony Lindgren, (Thu May 13, 2:36 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Thu May 13, 2:54 pm)
RE: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Woodruff, Richard, (Thu May 13, 3:33 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Rafael J. Wysocki, (Thu May 13, 3:46 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Arve Hjønnevåg, (Thu May 13, 4:06 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Thu May 13, 4:28 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Thu May 13, 4:48 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Daniel Walker, (Fri May 14, 9:47 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6), Brian Swetland, (Mon May 17, 4:04 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Pavel Machek, (Mon May 24, 11:57 am)
Re: [PATCH 0/8] Suspend block api (version 6), Matthew Garrett, (Mon May 24, 12:08 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Arve Hjønnevåg, (Mon May 24, 6:16 pm)
Re: [PATCH 0/8] Suspend block api (version 6), Pavel Machek, (Wed May 26, 10:32 am)