From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Zhang Rui <rui.zhang@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
pm list <linux-pm@lists.linux-foundation.org>
Subject: Re: Async resume patch (was: Re: [GIT PULL] PM updates for 2.6.33)
Date: Wed, 9 Dec 2009 22:56:45 +0100 [thread overview]
Message-ID: <200912092256.45872.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0912082111360.26994-100000@netrider.rowland.org>
On Wednesday 09 December 2009, Alan Stern wrote:
> On Tue, 8 Dec 2009, Rafael J. Wysocki wrote:
>
> > > Well, one difficulty. It arises only because we are contemplating
> > > having the PM core fire up the async tasks, rather than having the
> > > drivers' suspend routines launch them (the way your original proposal
> > > did -- the difficulty does not arise there).
> > >
> > > Suppose A and B are unrelated devices and we need to impose the
> > > off-tree constraint that A suspends after B. With children taking
> > > their parent's lock, the way to prevent A from suspending too soon is
> > > by having B's suspend routine acquire A's lock.
> > >
> > > But B's suspend routine runs entirely in an async task, because that
> > > task is started by the PM core and it does the method call. Hence by
> > > the time B's suspend routine is called, A may already have begun
> > > suspending -- it's too late to take A's lock. To make the locking
> > > work, B would have to acquire A's lock _before_ B's async task starts.
> > > Since the PM core is unaware of the off-tree dependency, there's no
> > > simple way to make it work.
> >
> > Do not set async_suspend for B and instead start your own async thread
> > from its suspend callback. The parent-children synchronization is done by the
> > core anyway (at least I'd do it that way), so the only thing you need to worry
> > about is the extra dependency.
>
> I don't like that because it introduces "artificial" dependencies: It
> makes B depend on all the preceding synchronous suspends, even totally
> unrelated ones. But yes, it would work.
Well, unfortunately, it wouldn't, because (at least in the context of my last
patch) the core would release the rwsems as soon as your suspend had
returned. So you'd have to make your suspend wait for the async thread and
that would make it pointless. So scratch that, it wasn't a good idea at all.
This leaves us with basically two options, where the first one is to use
rwsems in a way that you've proposed (with iterating over children), and the
second one is to use completions. In my opinion rwsems don't give us any
advantage in this case, so I'd very much prefer to use completions.
Rafael
next prev parent reply other threads:[~2009-12-09 21:56 UTC|newest]
Thread overview: 235+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-05 21:16 [GIT PULL] PM updates for 2.6.33 Rafael J. Wysocki
2009-12-05 21:43 ` Linus Torvalds
2009-12-05 21:58 ` Linus Torvalds
2009-12-05 23:55 ` Rafael J. Wysocki
2009-12-06 0:45 ` Arjan van de Ven
2009-12-06 1:26 ` Rafael J. Wysocki
2009-12-06 1:58 ` Arjan van de Ven
2009-12-06 8:39 ` Ingo Molnar
2009-12-06 0:48 ` Linus Torvalds
2009-12-06 1:54 ` Rafael J. Wysocki
2009-12-06 1:57 ` Rafael J. Wysocki
2009-12-06 2:05 ` Linus Torvalds
2009-12-06 2:36 ` Rafael J. Wysocki
2009-12-06 15:23 ` Alan Stern
2009-12-06 19:04 ` [linux-pm] " Victor Lowther
2009-12-07 3:57 ` Zhang Rui
2009-12-07 5:57 ` Linus Torvalds
2009-12-07 6:15 ` Linus Torvalds
2009-12-17 23:28 ` Benjamin Herrenschmidt
2009-12-07 6:37 ` Arjan van de Ven
2009-12-07 15:13 ` Alan Stern
2009-12-07 16:31 ` Linus Torvalds
2009-12-07 16:55 ` Linus Torvalds
2009-12-07 17:52 ` Alan Stern
2009-12-07 18:05 ` Linus Torvalds
2009-12-07 20:37 ` Alan Stern
2009-12-07 20:48 ` Linus Torvalds
2009-12-07 21:32 ` Alan Stern
2009-12-07 21:41 ` Linus Torvalds
2009-12-07 21:47 ` Rafael J. Wysocki
2009-12-07 22:01 ` Alan Stern
2009-12-07 22:06 ` Linus Torvalds
2009-12-07 22:21 ` Alan Stern
2009-12-07 22:26 ` Linus Torvalds
2009-12-07 23:16 ` Alan Stern
2009-12-07 22:02 ` Rafael J. Wysocki
2009-12-07 22:16 ` Linus Torvalds
2009-12-07 23:51 ` Rafael J. Wysocki
2009-12-08 3:27 ` Alan Stern
2009-12-08 12:23 ` Async resume patch (was: Re: [GIT PULL] PM updates for 2.6.33) Rafael J. Wysocki
2009-12-08 12:35 ` Rafael J. Wysocki
2009-12-08 15:35 ` Linus Torvalds
2009-12-08 15:55 ` Alan Stern
2009-12-08 16:42 ` Linus Torvalds
2009-12-08 18:08 ` Alan Stern
2009-12-08 18:41 ` Linus Torvalds
2009-12-08 18:52 ` Linus Torvalds
2009-12-08 19:34 ` Alan Stern
2009-12-08 19:30 ` Alan Stern
2009-12-08 20:48 ` Linus Torvalds
2009-12-08 21:32 ` Alan Stern
2009-12-08 21:52 ` Christian Borntraeger
2009-12-08 22:16 ` Linus Torvalds
2009-12-09 19:06 ` Alan Stern
2009-12-09 21:52 ` Linus Torvalds
2009-12-08 19:44 ` Rafael J. Wysocki
2009-12-08 20:16 ` Alan Stern
2009-12-08 20:30 ` Rafael J. Wysocki
2009-12-08 20:44 ` Alan Stern
2009-12-08 20:52 ` Rafael J. Wysocki
2009-12-08 21:40 ` Alan Stern
2009-12-08 21:48 ` spinlock in completion_done() (was: Re: Async resume patch (was: Re: [GIT PULL] PM updates for 2.6.33)) Rafael J. Wysocki
2009-12-09 9:29 ` Ingo Molnar
2009-12-09 22:37 ` Rafael J. Wysocki
2009-12-10 7:59 ` Ingo Molnar
2009-12-11 4:10 ` Dave Chinner
2009-12-11 7:54 ` Ingo Molnar
2009-12-12 23:07 ` [PATCH] sched: Make wakeup side variants of completion API irq safe (was: Re: spinlock in completion_done()) Rafael J. Wysocki
2009-12-13 7:36 ` [tip:sched/urgent] sched: Make wakeup side and atomic variants of completion API irq safe tip-bot for Rafael J. Wysocki
2009-12-08 22:18 ` Async resume patch (was: Re: [GIT PULL] PM updates for 2.6.33) Linus Torvalds
2009-12-09 2:11 ` Alan Stern
2009-12-08 21:08 ` Linus Torvalds
2009-12-08 21:13 ` Linus Torvalds
2009-12-08 22:07 ` Alan Stern
2009-12-08 22:30 ` Rafael J. Wysocki
2009-12-09 2:23 ` Alan Stern
2009-12-09 21:56 ` Rafael J. Wysocki [this message]
2009-12-09 22:27 ` Alan Stern
2009-12-08 22:32 ` Linus Torvalds
2009-12-09 2:35 ` Alan Stern
2009-12-09 2:54 ` Linus Torvalds
2009-12-09 15:24 ` Alan Stern
2009-12-09 15:38 ` Linus Torvalds
2009-12-09 15:57 ` Alan Stern
2009-12-25 17:09 ` Pavel Machek
2009-12-09 13:38 ` Mark Brown
2009-12-09 15:49 ` Alan Stern
2009-12-09 16:02 ` Mark Brown
2009-12-09 16:23 ` Alan Stern
2009-12-09 16:46 ` Mark Brown
2009-12-09 16:57 ` Linus Torvalds
2009-12-09 17:45 ` Mark Brown
2009-12-09 17:57 ` Linus Torvalds
2009-12-09 18:27 ` Mark Brown
2009-12-09 17:10 ` Alan Stern
2009-12-09 17:19 ` Linus Torvalds
2009-12-09 18:08 ` Mark Brown
2009-12-08 21:04 ` Linus Torvalds
2009-12-08 21:40 ` Rafael J. Wysocki
2009-12-08 22:03 ` Rafael J. Wysocki
2009-12-08 22:55 ` Async suspend-resume patch w/ rwsems " Rafael J. Wysocki
2009-12-08 23:24 ` Rafael J. Wysocki
2009-12-09 20:15 ` Alan Stern
2009-12-09 22:18 ` Rafael J. Wysocki
2009-12-09 22:38 ` Alan Stern
2009-12-09 23:18 ` Async suspend-resume patch w/ completions (was: Re: Async suspend-resume patch w/ rwsems) Rafael J. Wysocki
2009-12-10 2:51 ` Linus Torvalds
2009-12-10 19:40 ` Rafael J. Wysocki
2009-12-10 23:30 ` Linus Torvalds
2009-12-11 1:02 ` Rafael J. Wysocki
2009-12-11 1:25 ` Linus Torvalds
2009-12-11 3:42 ` Alan Stern
2009-12-11 22:17 ` Rafael J. Wysocki
2009-12-12 0:38 ` Alan Stern
2009-12-11 22:11 ` Rafael J. Wysocki
2009-12-11 22:31 ` Linus Torvalds
2009-12-11 23:48 ` Rafael J. Wysocki
2009-12-11 23:53 ` Linus Torvalds
2009-12-12 17:48 ` Rafael J. Wysocki
2009-12-12 18:54 ` Linus Torvalds
2009-12-12 22:34 ` Rafael J. Wysocki
2009-12-12 22:40 ` Rafael J. Wysocki
2009-12-14 18:21 ` Linus Torvalds
2009-12-14 22:11 ` Rafael J. Wysocki
2009-12-14 22:41 ` Linus Torvalds
2009-12-14 22:43 ` Linus Torvalds
2009-12-14 23:18 ` Rafael J. Wysocki
2009-12-15 0:10 ` Linus Torvalds
2009-12-15 0:11 ` Linus Torvalds
2009-12-15 11:14 ` Rafael J. Wysocki
2009-12-15 15:31 ` Linus Torvalds
2009-12-15 11:03 ` Rafael J. Wysocki
2009-12-15 15:26 ` Linus Torvalds
2009-12-15 15:55 ` Alan Stern
2009-12-15 16:28 ` Linus Torvalds
2009-12-15 18:57 ` Linus Torvalds
2009-12-15 20:26 ` Alan Stern
2009-12-15 21:26 ` Rafael J. Wysocki
2009-12-15 22:01 ` Alan Stern
2009-12-15 21:54 ` Linus Torvalds
2009-12-15 22:27 ` Alan Stern
2009-12-16 2:11 ` Rafael J. Wysocki
2009-12-16 6:40 ` Dmitry Torokhov
2009-12-18 22:43 ` Rafael J. Wysocki
2009-12-19 19:59 ` Dmitry Torokhov
2009-12-19 21:33 ` Rafael J. Wysocki
2009-12-19 22:29 ` Rafael J. Wysocki
2009-12-19 22:43 ` Dmitry Torokhov
2009-12-19 22:47 ` Dmitry Torokhov
2009-12-19 23:10 ` Rafael J. Wysocki
2009-12-19 23:22 ` Dmitry Torokhov
2009-12-19 23:33 ` Rafael J. Wysocki
2009-12-19 23:23 ` Linus Torvalds
2009-12-19 23:40 ` Rafael J. Wysocki
2009-12-19 23:46 ` Linus Torvalds
2009-12-19 23:47 ` Linus Torvalds
2009-12-19 23:54 ` Rafael J. Wysocki
2009-12-19 23:53 ` Rafael J. Wysocki
2009-12-20 0:09 ` Linus Torvalds
2009-12-20 0:35 ` Rafael J. Wysocki
2009-12-20 2:41 ` Dmitry Torokhov
2009-12-20 19:25 ` [linux-pm] " Rafael J. Wysocki
2009-12-21 7:39 ` [linux-pm] Async suspend-resume patch w/ completions (was: Re: Async?suspend-resume " Dmitry Torokhov
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-20 12:52 ` Rafael J. Wysocki
2009-12-20 17:12 ` Alan Stern
2009-12-20 18:10 ` Rafael J. Wysocki
2009-12-20 19:38 ` Alan Stern
2009-12-20 19:51 ` Rafael J. Wysocki
2009-12-16 15:22 ` Alan Stern
2009-12-16 19:26 ` Rafael J. Wysocki
2009-12-16 15:47 ` Linus Torvalds
2009-12-16 19:27 ` Rafael J. Wysocki
2009-12-16 20:59 ` Linus Torvalds
2009-12-16 21:57 ` Rafael J. Wysocki
2009-12-16 22:11 ` Linus Torvalds
2009-12-16 22:33 ` Rafael J. Wysocki
2009-12-16 23:04 ` Alan Stern
2009-12-16 23:18 ` Rafael J. Wysocki
2009-12-17 1:30 ` Rafael J. Wysocki
2009-12-17 1:49 ` Rafael J. Wysocki
2009-12-17 20:06 ` Alan Stern
2009-12-17 20:36 ` Rafael J. Wysocki
2009-12-18 1:51 ` Rafael J. Wysocki
2009-12-18 17:26 ` Alan Stern
2009-12-19 21:41 ` Rafael J. Wysocki
2009-12-20 3:48 ` Alan Stern
2009-12-20 12:55 ` Rafael J. Wysocki
2009-12-18 23:42 ` Rafael J. Wysocki
2009-12-13 13:08 ` Rafael J. Wysocki
2009-12-13 17:30 ` Alan Stern
2009-12-13 19:02 ` [linux-pm] " Alan Stern
2009-12-12 0:43 ` Alan Stern
2009-12-12 17:35 ` Rafael J. Wysocki
2009-12-10 15:31 ` Alan Stern
2009-12-10 15:45 ` Linus Torvalds
2009-12-10 18:37 ` Alan Stern
2009-12-10 23:51 ` Linus Torvalds
2009-12-10 21:14 ` Rafael J. Wysocki
2009-12-10 22:17 ` Alan Stern
2009-12-10 23:45 ` Rafael J. Wysocki
2009-12-07 15:15 ` [GIT PULL] PM updates for 2.6.33 Rafael J. Wysocki
2009-12-07 16:37 ` Linus Torvalds
2009-12-07 20:47 ` Rafael J. Wysocki
2009-12-07 20:56 ` Linus Torvalds
2009-12-07 5:20 ` Linus Torvalds
2009-12-07 15:42 ` Alan Stern
2009-12-06 19:35 ` Arjan van de Ven
2009-12-06 19:58 ` Linus Torvalds
2009-12-06 20:18 ` Arjan van de Ven
2009-12-06 21:08 ` Linus Torvalds
2009-12-06 22:54 ` Dmitry Torokhov
2009-12-07 0:55 ` Arjan van de Ven
2009-12-07 2:27 ` Dmitry Torokhov
2009-12-07 5:26 ` Arjan van de Ven
2009-12-07 6:00 ` Dmitry Torokhov
2009-12-21 9:01 ` Pavel Machek
2009-12-07 1:18 ` Arjan van de Ven
2009-12-07 2:27 ` Dmitry Torokhov
2009-12-07 5:31 ` Arjan van de Ven
2009-12-07 6:15 ` Dmitry Torokhov
2009-12-07 6:31 ` Arjan van de Ven
2009-12-07 6:32 ` Dmitry Torokhov
2009-12-07 15:17 ` Rafael J. Wysocki
2009-12-06 20:36 ` Alan Stern
2009-12-06 21:17 ` Arjan van de Ven
2009-12-06 21:46 ` Alan Stern
2009-12-06 21:57 ` Arjan van de Ven
2009-12-06 22:04 ` Alan Stern
2009-12-06 0:29 ` Rafael J. Wysocki
2009-12-06 0:52 ` Linus Torvalds
2009-12-06 1:24 ` Rafael J. Wysocki
2009-12-06 1:50 ` Linus Torvalds
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=200912092256.45872.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=rui.zhang@intel.com \
--cc=stern@rowland.harvard.edu \
--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