[Arve wrote] > On Tue, May 25, 2010 at 2:41 AM, Paul Walmsley <paul@xxxxxxxxx> wrote: > > On Mon, 17 May 2010, Arve Hjønnevåg wrote: > >> > >> How do you know if the work being done while suspending is work that > >> is needed to suspend or work that should abort suspend? > > > > Consider a suspending system in which all "untrusted" processes have been > > placed into TASK_INTERRUPTIBLE state and have had their timers > > disabled.[2] The only remaining work to do on the system is work that > > needs to be done as part of the suspend process, or work that is part of > > a > > "trusted" process or the kernel. If the suspend needs to be aborted due > > to the arrival of an event, this can be handled as part of the standard > > suspend process (described below). > > That means modifying all kernel code that would use suspend blockers > to abort suspend by returning an error from suspend instead. How is > this better than using suspend blockers? It will mean that the same API is used for blocking suspend in regular suspend/resume, runtime PM runtime_suspend/runtime_resume and now also suspend blockers, right? So only one code path for drivers that want to support both, no? That'll be a bit more elegant for drivers that want to support both runtime PM and suspend blockers I believe. Overall as a driver writer I'm quite confused at this point, if I have a driver X, how is that code going to look if it is going to support both runtime PM *and* suspend blockers? I don't say it has to support both mechanisms in parallell, I'm even fine with putting it in #ifdef:s, but how will the source code look? A real-world example on a simple driver out of the Motorola Droid git or so would help a lot. It's quite relevant since e.g. all OMAP drivers will need this modification to be used with Android-like systems, and at ST-Ericsson we will need both runtime PM and suspend blockers for our drivers as well. It will as a consequence affect the drivers for all ARM reference boards since we use the drivers for ARM PrimeCells. etc... Now if this mechanism is going in, my main interest is that there is some clearly cut way and design pattern for supporting both runtime PM and suspend blocks. Yours, Linus Walleij _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm