public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	pm list <linux-pm@lists.linux-foundation.org>
Subject: Re: Async suspend-resume patch w/ completions (was: Re: Async suspend-resume patch w/ rwsems)
Date: Sat, 12 Dec 2009 23:34:08 +0100	[thread overview]
Message-ID: <200912122334.08367.rjw@sisk.pl> (raw)
In-Reply-To: <alpine.LFD.2.00.0912121049390.3526@localhost.localdomain>

On Saturday 12 December 2009, Linus Torvalds wrote:
> 
> On Sat, 12 Dec 2009, Rafael J. Wysocki wrote:
> > 
> > I'd like to put it into my tree in this form, if you don't mind.
> 
> This version still has a major problem, which is not related to 
> completions vs rwsems, but simply to the fact that you wanted to do this 
> at the generic device layer level rather than do it at the actual 
> low-level suspend/resume level.
> 
> Namely that there's no apparent sane way to say "don't wait for children".
> 
> PCI bridges that don't suspend at all - or any other device that only 
> suspends in the 'suspend_late()' thing, for that matter - don't have any 
> reason what-so-ever to wait for children, since they aren't actually 
> suspending in the first place. But you make them wait regardless, which 
> then serializes things unnecessarily (for example, two unrelated USB 
> controllers).

This is a problem that needs to be solved.

One solution that we have discussed on linux-pm is to start a bunch of async
threads searching for async devices that can be suspended and suspending
them (assuming suspend is considered) out of order with respect to dpm_list.
For example, leaf async devices can always be suspended at the same time
regardless of their positions in dpm_list.  This way we could get almost the
entire gain resulting from suspending or resuming devices in parallel without
bothering drivers with the problem of dependencies that need to be honoured.

That's something we can add on top of this patch, though, not to complicate
things from the start and it surely requires more discussion.

> And no, making _everything_ be async is _not_ the answer.

I'm not sure what you mean, really.

Speaking of PCI bridges, even though they don't "suspend" in the sense of
being put into low power states or something, we still need to save their
registers on suspend and restore them on resume, and that restore has to
be done before we start to access devices below the bridge.

There are devices with totally null suspend and resume routines that even
the bus type doesn't really handle, but those can be marked as "async" from
the start and they won't really get in the way any more (this creates another
issue to solve, namely that we shouldn't really start a new async thread for
each of them; we have considered that too).

Even if we move that all to drivers, the constraints won't go away and someone
will have to take care of them.  Now, since _we_ have problems with reaching
an agreement about how to do it, the driver writers will be even less likely to
figure that out.

Rafael

  reply	other threads:[~2009-12-12 22:34 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.44L0.0912091729530.2672-100000@iolanthe.rowland.org>
2009-12-09 23:18 ` Async suspend-resume patch w/ completions (was: Re: Async suspend-resume patch w/ rwsems) Rafael J. Wysocki
     [not found] ` <200912100018.19723.rjw@sisk.pl>
2009-12-10  2:51   ` Linus Torvalds
2009-12-10 15:31   ` Alan Stern
     [not found]   ` <alpine.LFD.2.00.0912091835280.3560@localhost.localdomain>
2009-12-10 19:40     ` Rafael J. Wysocki
     [not found]     ` <200912102040.11063.rjw@sisk.pl>
2009-12-10 23:30       ` Linus Torvalds
     [not found]       ` <alpine.LFD.2.00.0912101507550.3560@localhost.localdomain>
2009-12-11  1:02         ` Rafael J. Wysocki
     [not found]         ` <200912110202.28536.rjw@sisk.pl>
2009-12-11  1:25           ` Linus Torvalds
     [not found]           ` <alpine.LFD.2.00.0912101713440.3560@localhost.localdomain>
2009-12-11  3:42             ` Alan Stern
2009-12-11 22:11             ` Rafael J. Wysocki
     [not found]             ` <200912112311.08548.rjw@sisk.pl>
2009-12-11 22:31               ` Linus Torvalds
     [not found]               ` <alpine.LFD.2.00.0912111415160.3922@localhost.localdomain>
2009-12-11 23:48                 ` Rafael J. Wysocki
     [not found]                 ` <200912120048.46180.rjw@sisk.pl>
2009-12-11 23:53                   ` Linus Torvalds
2009-12-12  0:43                   ` Alan Stern
     [not found]                   ` <alpine.LFD.2.00.0912111552330.3526@localhost.localdomain>
2009-12-12 17:48                     ` Rafael J. Wysocki
2009-12-12 18:54                       ` Linus Torvalds
2009-12-12 22:34                         ` Rafael J. Wysocki [this message]
2009-12-12 22:40                           ` Rafael J. Wysocki
2009-12-14 18:21                           ` Linus Torvalds
     [not found]                           ` <alpine.LFD.2.00.0912141015240.26135@localhost.localdomain>
2009-12-14 22:11                             ` Rafael J. Wysocki
     [not found]                             ` <200912142311.31658.rjw@sisk.pl>
2009-12-14 22:41                               ` Linus Torvalds
     [not found]                               ` <alpine.LFD.2.00.0912141416040.26135@localhost.localdomain>
2009-12-14 22:43                                 ` Linus Torvalds
2009-12-14 23:18                                 ` Rafael J. Wysocki
     [not found]                                 ` <200912150018.11837.rjw@sisk.pl>
2009-12-15  0:10                                   ` Linus Torvalds
     [not found]                                   ` <alpine.LFD.2.00.0912141609020.14385@localhost.localdomain>
2009-12-15  0:11                                     ` Linus Torvalds
2009-12-15 11:03                                     ` Rafael J. Wysocki
     [not found]                                     ` <alpine.LFD.2.00.0912141610460.14385@localhost.localdomain>
2009-12-15 11:14                                       ` Rafael J. Wysocki
     [not found]                                       ` <200912151214.10980.rjw@sisk.pl>
2009-12-15 15:31                                         ` Linus Torvalds
     [not found]                                     ` <200912151203.22916.rjw@sisk.pl>
2009-12-15 15:26                                       ` Linus Torvalds
     [not found]                                       ` <alpine.LFD.2.00.0912150722310.14385@localhost.localdomain>
2009-12-15 15:55                                         ` Alan Stern
2009-12-16  2:11                                         ` Rafael J. Wysocki
     [not found]                                         ` <200912160311.05915.rjw@sisk.pl>
2009-12-16  6:40                                           ` Dmitry Torokhov
2009-12-16 15:22                                           ` Alan Stern
2009-12-16 15:47                                           ` Linus Torvalds
2009-12-16 19:27                                             ` Rafael J. Wysocki
     [not found]                                             ` <200912162027.16574.rjw@sisk.pl>
2009-12-16 20:59                                               ` Linus Torvalds
     [not found]                                               ` <alpine.LFD.2.00.0912161255080.3556@localhost.localdomain>
2009-12-16 21:57                                                 ` Rafael J. Wysocki
     [not found]                                                 ` <200912162257.00771.rjw@sisk.pl>
2009-12-16 22:11                                                   ` Linus Torvalds
     [not found]                                                   ` <alpine.LFD.2.00.0912161410120.3556@localhost.localdomain>
2009-12-16 22:33                                                     ` Rafael J. Wysocki
2009-12-16 23:04                                                   ` Alan Stern
2009-12-17  1:49                                                   ` Rafael J. Wysocki
2009-12-17 20:06                                                     ` Alan Stern
2009-12-18  1:51                                                     ` Rafael J. Wysocki
     [not found]                                                     ` <200912180251.22655.rjw@sisk.pl>
2009-12-18 17:26                                                       ` Alan Stern
2009-12-18 23:42                                                       ` Rafael J. Wysocki
     [not found]                                           ` <20091216064025.GB2699@core.coreip.homeip.net>
2009-12-18 22:43                                             ` Rafael J. Wysocki
2009-12-19 19:59                                               ` Dmitry Torokhov
     [not found]                                               ` <20091219195935.GB4073@core.coreip.homeip.net>
2009-12-19 21:33                                                 ` Rafael J. Wysocki
     [not found]                                                 ` <200912192233.44575.rjw@sisk.pl>
2009-12-19 22:29                                                   ` Rafael J. Wysocki
     [not found]                                                   ` <200912192329.03251.rjw@sisk.pl>
2009-12-19 22:43                                                     ` Dmitry Torokhov
2009-12-19 22:47                                                   ` Dmitry Torokhov
     [not found]                                                   ` <A37A0A6F-3662-40C9-BE1F-B9F6A38CD80B@gmail.com>
2009-12-19 23:10                                                     ` Rafael J. Wysocki
     [not found]                                                     ` <200912200010.19899.rjw@sisk.pl>
2009-12-19 23:22                                                       ` Dmitry Torokhov
2009-12-19 23:23                                                       ` Linus Torvalds
     [not found]                                                       ` <43A402BB-6AB3-4127-A441-D53EDE09F22E@gmail.com>
2009-12-19 23:33                                                         ` Rafael J. Wysocki
     [not found]                                                       ` <alpine.LFD.2.00.0912191521180.3712@localhost.localdomain>
2009-12-19 23:40                                                         ` Rafael J. Wysocki
     [not found]                                                         ` <200912200040.18944.rjw@sisk.pl>
2009-12-19 23:46                                                           ` Linus Torvalds
     [not found]                                                           ` <alpine.LFD.2.00.0912191542570.3712@localhost.localdomain>
2009-12-19 23:47                                                             ` Linus Torvalds
2009-12-19 23:53                                                             ` Rafael J. Wysocki
     [not found]                                                             ` <alpine.LFD.2.00.0912191546250.3712@localhost.localdomain>
2009-12-19 23:54                                                               ` Rafael J. Wysocki
     [not found]                                                             ` <200912200053.45988.rjw@sisk.pl>
2009-12-20  0:09                                                               ` Linus Torvalds
     [not found]                                                               ` <alpine.LFD.2.00.0912191557320.3712@localhost.localdomain>
2009-12-20  0:35                                                                 ` Rafael J. Wysocki
2009-12-20  2:41                                                                 ` Dmitry Torokhov
     [not found]                                                                 ` <20091220024142.GC4073@core.coreip.homeip.net>
2009-12-20 19:25                                                                   ` Rafael J. Wysocki
     [not found]                                                                   ` <200912202025.25618.rjw@sisk.pl>
2009-12-21  7:39                                                                     ` Async suspend-resume patch w/ completions (was: Re: Async?suspend-resume " Dmitry Torokhov
     [not found]                                                                     ` <20091221073915.GC3234@core.coreip.homeip.net>
2009-12-21 11:20                                                                       ` Vojtech Pavlik
2009-12-20  2:45                                                               ` Async suspend-resume patch w/ completions (was: Re: Async suspend-resume " Dmitry Torokhov
2009-12-20  3:59                                                           ` Alan Stern
2009-12-13 13:08                         ` Rafael J. Wysocki
2009-12-13 17:30                         ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912101010090.2825-100000@iolanthe.rowland.org>
2009-12-10 15:45 ` Linus Torvalds
2009-12-10 21:14 ` Rafael J. Wysocki
     [not found] <alpine.LFD.2.00.0912100739260.3560@localhost.localdomain>
2009-12-10 18:37 ` Alan Stern
     [not found] <200912102214.40310.rjw@sisk.pl>
2009-12-10 22:17 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912101653120.2680-100000@iolanthe.rowland.org>
2009-12-10 23:45 ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0912101321020.2680-100000@iolanthe.rowland.org>
2009-12-10 23:51 ` Linus Torvalds
     [not found] <Pine.LNX.4.44L0.0912102155390.12136-100000@netrider.rowland.org>
2009-12-11 22:17 ` Rafael J. Wysocki
     [not found] <200912112317.31668.rjw@sisk.pl>
2009-12-12  0:38 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912111938310.32493-100000@netrider.rowland.org>
2009-12-12 17:35 ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0912131221210.1111-100000@netrider.rowland.org>
2009-12-13 19:02 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912151047410.3566-100000@iolanthe.rowland.org>
2009-12-15 16:28 ` Linus Torvalds
     [not found] ` <alpine.LFD.2.00.0912150803250.14385@localhost.localdomain>
2009-12-15 18:57   ` Linus Torvalds
2009-12-15 20:26   ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912151444010.2643-100000@iolanthe.rowland.org>
2009-12-15 21:26 ` Rafael J. Wysocki
2009-12-15 21:54 ` Linus Torvalds
     [not found] <200912152226.22578.rjw@sisk.pl>
2009-12-15 22:01 ` Alan Stern
     [not found] <alpine.LFD.2.00.0912151337350.14385@localhost.localdomain>
2009-12-15 22:27 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912161018100.2909-100000@iolanthe.rowland.org>
2009-12-16 19:26 ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0912161753540.2643-100000@iolanthe.rowland.org>
2009-12-16 23:18 ` Rafael J. Wysocki
     [not found] ` <200912170018.05175.rjw@sisk.pl>
2009-12-17  1:30   ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0912171444040.2645-100000@iolanthe.rowland.org>
2009-12-17 20:36 ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0912181205290.2987-100000@iolanthe.rowland.org>
2009-12-19 21:41 ` Rafael J. Wysocki
     [not found] <200912192241.03991.rjw@sisk.pl>
2009-12-20  3:48 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912192253200.6618-100000@netrider.rowland.org>
2009-12-20 12:52 ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0912192232360.6618-100000@netrider.rowland.org>
2009-12-20 12:55 ` Rafael J. Wysocki
     [not found] <200912201352.07689.rjw@sisk.pl>
2009-12-20 17:12 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912201210300.24162-100000@netrider.rowland.org>
2009-12-20 18:10 ` Rafael J. Wysocki
     [not found] <200912201910.26895.rjw@sisk.pl>
2009-12-20 19:38 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0912201434340.27137-100000@netrider.rowland.org>
2009-12-20 19:51 ` Rafael J. Wysocki

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=200912122334.08367.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox