Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8)

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Matthew Garrett
Date: Thursday, May 27, 2010 - 9:52 am

On Thu, May 27, 2010 at 05:41:31PM +0100, Alan Cox wrote:

Sorry, using cgroups and scheduler tricks as a race-free replacement for 
opportunistic suspend.


The timeout would be at the userspace platform level. If I haven't 
touched the app for 30 seconds (and if the app hasn't taken any form of 
suspend block), the screen should turn off. In the current Android 
implementation that will then (in the absence of any kernel-level 
suspend blockers) result in the system transitioning into a fully 
suspended state.


Not at all. The fact that the application hasn't taken any sort of 
suspend block means that the application has indicated that it's happy 
with no longer being scheduled when the screen is shut off, *providing 
there's no wakeup event to be processed*.


Again, that's not the desired outcome. The desired outcome is that when 
the screen shuts off, the application no longer gets scheduled until a 
network packet arrives. The difference between these scenarios is large.


This is still racy. Going back to this:

int input = socket(AF_INET, SOCK_STREAM|SOCK_NONBLOCK, 0);
char foo;
struct sockaddr addr;
connect (input, &addr, sizeof(addr))
while (1) {
       if (read(input, &foo, 1) > 0) {
               (do something)
       } else {
		* SUSPEND OCCURS HERE *
               (draw bouncing cows and clouds and tractor beams briefly)
       }
}

A wakeup event now arrives. We use kernel level suspend blockers to 
prevent the system from going back to sleep until userspace has read the 
packet. The application finishes drawing its cows, reads the packet 
(thus releasing the kernel-level suspend block) and them immediately 
reaches the end of its timeslice. At this point the application has not 
had an opportunity to indicate in any way whether or not the packet has 
altered its constraints in any way. What stops us from immediately 
suspending again?

-- 
Matthew Garrett | mjg59@srcf.ucam.org
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/8] Suspend block api (version 8), =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 1/8] PM: Opportunistic suspend support., =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 2/8] PM: suspend_block: Add driver to access suspen ..., =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 3/8] PM: suspend_block: Abort task freezing if a su ..., =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 4/8] PM: suspend_block: Add debugfs file, =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 5/8] PM: suspend_block: Add suspend_blocker stats, =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 6/8] PM: Add suspend blocking work., =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 7/8] Input: Block suspend while event queue is not ..., =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
[PATCH 8/8] power_supply: Block suspend while power supply ..., =?UTF-8?q?Arve=20Hj= ..., (Fri May 21, 3:46 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Sun May 23, 5:46 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Felipe Balbi, (Sun May 23, 9:32 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Mon May 24, 11:49 am)
Re: [PATCH 0/8] Suspend block api (version 8), Kevin Hilman, (Mon May 24, 3:51 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Mon May 24, 4:38 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 1:45 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 1:47 am)
Re: [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 2:40 am)
Re: [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 2:41 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 2:45 am)
Re: [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Wed May 26, 2:49 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 2:54 am)
Re: [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 3:02 am)
Re: [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 3:06 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 3:08 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 3:09 am)
Re: [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 3:19 am)
Re: [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 3:25 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 3:32 am)
Re: [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Wed May 26, 3:40 am)
Re: [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 3:40 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 3:49 am)
Re: [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 3:53 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 4:12 am)
Re: [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 4:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 4:37 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 5:24 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 5:33 am)
Re: [PATCH 0/8] Suspend block api (version 8), Alan Cox, (Wed May 26, 5:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 5:41 am)
Re: [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 5:53 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 5:54 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 6:03 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 6:06 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 6:07 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 6:19 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 6:30 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 6:39 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Wed May 26, 6:46 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 8:11 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 8:12 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 8:15 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 8:16 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 8:40 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Wed May 26, 8:45 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 8:47 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 8:49 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Wed May 26, 10:22 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 12:54 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 12:56 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Zygo Blaxell, (Wed May 26, 1:18 pm)
Re: [PATCH 2/8] PM: suspend_block: Add driver to access su ..., Rafael J. Wysocki, (Wed May 26, 2:57 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 3:30 pm)
Re: [PATCH 2/8] PM: suspend_block: Add driver to access su ..., Rafael J. Wysocki, (Wed May 26, 3:45 pm)
Re: [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 3:52 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed May 26, 5:49 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 10:11 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed May 26, 10:14 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Thu May 27, 1:05 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Thu May 27, 1:58 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 6:26 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 6:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 6:37 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 7:06 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 7:28 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 7:29 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 7:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 7:41 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 7:43 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 8:05 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 8:07 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 8:32 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 8:52 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 9:07 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 9:19 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Thu May 27, 9:28 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 9:45 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 9:52 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 9:59 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 10:00 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 10:04 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:07 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:13 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 10:15 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:16 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Balbi, (Thu May 27, 10:18 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:20 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Thu May 27, 10:21 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:23 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:25 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:25 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:26 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:26 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:28 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:32 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:41 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Thu May 27, 10:42 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:46 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:50 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:52 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:52 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:54 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 10:56 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 10:59 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 10:59 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 11:02 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 11:06 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 11:12 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:12 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:17 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 11:18 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:18 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:20 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu May 27, 11:22 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:23 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:26 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:31 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Zygo Blaxell, (Thu May 27, 11:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 11:53 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 11:56 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 12:06 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 12:29 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Zygo Blaxell, (Thu May 27, 12:32 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 1:11 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu May 27, 1:23 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 1:38 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 2:06 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 2:08 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Thu May 27, 2:17 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 2:36 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Thu May 27, 2:55 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 3:08 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 3:35 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Thu May 27, 4:50 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Fri May 28, 12:03 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Fri May 28, 12:25 am)