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

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Alan Cox
Date: Thursday, May 27, 2010 - 3:08 pm

On Thu, 27 May 2010 17:38:03 -0400 (EDT)
Alan Stern <stern@rowland.harvard.edu> wrote:


No ? We are talking about just letting power management solve the whole
problem for us.


No - because we are not forcing the suspend. The app must go idle. If you
force the suspend of running processes then yes the entire thing goes
castors up - which is why it's a bad idea to do so.


Read the discussion about how the race is avoided at the hardware level.
That race is I think not there and furthermore most drivers get it right
already.

There are several cases

1.	IRQ during app layer (ie policy in user space) asking
		applications to go passive

	- The event occurs, we undo the app layer policy, easy
	  (or app wakes process and we let it fall through)

2.	IRQ after the app layer quiesces its clients

	- The task wakes, the app layer won't see it - the app layer
	  allows suspend as an idle mode. Not a problem - the app is
	  running the cpu policy manager will see this and not suspend
	  until the app has been asleep for a bit. The app may well of
	  course tell the UI layer 'hey I want you back on' and it take
	  you back to the full on case.

3.	IRQ after kernel suspend begins

	- The driver will refuse the suspend, we don't suspend, we unwind
	  the resume so far, the app wakes, we propogate stuff back up to
	  user space whose policy manager unwinds its position

4.	IRQ after driver has done its final checks

	- Wake up lines are set
	- We suspend
	- We immediately get resumed
	- We follow the full resume path

This is I believe robust (and has been implemented on some non x86
boxes). It depends on not forcing running tasks into suspend. That is the
key.

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

Messages in current thread:
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Alan Cox, (Thu May 27, 3:08 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 3:09 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Thu May 27, 3:36 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Thu May 27, 7:47 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Thu May 27, 9:55 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Thu May 27, 11:39 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Fri May 28, 12:11 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Fri May 28, 2:32 am)
Re: resume latency QoS support, unify suspend/resume into ..., Arve Hjønnevåg, (Fri May 28, 2:59 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Fri May 28, 4:20 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Fri May 28, 4:41 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Fri May 28, 5:30 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Fri May 28, 5:31 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Fri May 28, 5:52 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Fri May 28, 6:20 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Fri May 28, 6:27 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Fri May 28, 7:02 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Fri May 28, 7:05 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Fri May 28, 7:21 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Fri May 28, 7:29 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Fri May 28, 7:41 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Fri May 28, 7:59 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Brian Swetland, (Fri May 28, 8:13 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Fri May 28, 8:53 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Zygo Blaxell, (Fri May 28, 10:27 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Fri May 28, 11:16 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Zygo Blaxell, (Fri May 28, 12:51 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Fri May 28, 2:44 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Fri May 28, 2:53 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Fri May 28, 4:42 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Fri May 28, 5:43 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat May 29, 12:53 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat May 29, 1:10 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Sat May 29, 1:28 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Sat May 29, 1:56 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Sat May 29, 9:10 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat May 29, 11:12 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat May 29, 11:12 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat May 29, 11:12 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Sat May 29, 1:12 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Mon May 31, 1:12 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Mon May 31, 1:47 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Mon May 31, 1:49 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Mon May 31, 1:52 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Mon May 31, 2:13 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Mon May 31, 2:14 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Mon May 31, 2:21 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Mon May 31, 2:41 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Mon May 31, 2:46 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Mon May 31, 3:17 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Mon May 31, 3:23 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Mon May 31, 3:27 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Mon May 31, 4:47 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Mon May 31, 10:21 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Tue Jun 1, 4:10 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Matthew Garrett, (Tue Jun 1, 6:51 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Tue Jun 1, 2:01 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Tue Jun 1, 3:24 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Tue Jun 1, 3:36 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Tue Jun 1, 6:10 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Tue Jun 1, 8:15 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Tue Jun 1, 8:32 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Tue Jun 1, 9:02 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Tue Jun 1, 9:14 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Tue Jun 1, 9:41 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Wed Jun 2, 12:00 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed Jun 2, 12:17 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Wed Jun 2, 12:21 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Wed Jun 2, 8:05 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed Jun 2, 12:47 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Wed Jun 2, 1:41 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Arve Hjønnevåg, (Wed Jun 2, 3:27 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Wed Jun 2, 4:03 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Wed Jun 2, 4:06 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Thu Jun 3, 3:05 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Thu Jun 3, 6:24 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Thu Jun 3, 7:18 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Thomas Gleixner, (Thu Jun 3, 7:35 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Thu Jun 3, 7:55 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), James Bottomley, (Thu Jun 3, 10:01 am)
RE: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Muralidhar, Rajeev D, (Thu Jun 3, 10:16 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Bryan Huntsman, (Thu Jun 3, 2:50 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Sat Jun 5, 9:58 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Sat Jun 5, 10:04 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Sat Jun 5, 10:16 am)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Sat Jun 5, 12:04 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat Jun 5, 12:16 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Rafael J. Wysocki, (Sat Jun 5, 12:39 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Sat Jun 5, 12:49 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Peter Zijlstra, (Sat Jun 5, 12:52 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Sat Jun 5, 12:53 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Felipe Contreras, (Sat Jun 5, 12:56 pm)
Re: [linux-pm] [PATCH 0/8] Suspend block api (version 8), Florian Mickler, (Sat Jun 5, 2:52 pm)