From: Linus Torvalds <torvalds@linux-foundation.org>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Zhang Rui <rui.zhang@intel.com>,
Alan Stern <stern@rowland.harvard.edu>,
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: [GIT PULL] PM updates for 2.6.33
Date: Mon, 7 Dec 2009 12:56:00 -0800 (PST) [thread overview]
Message-ID: <alpine.LFD.2.00.0912071249390.3560@localhost.localdomain> (raw)
In-Reply-To: <200912072147.13851.rjw@sisk.pl>
On Mon, 7 Dec 2009, Rafael J. Wysocki wrote:
>
> So I guess the only thing we need at the core level is to call
> async_synchronize_full() after every stage of suspend/resume, right?
Yes and no.
Yes in the sense that _if_ everybody always uses "async_schedule()" (or
whatever the call is named - I've really only written pseudo-code and
haven't even tried to look up the details), then the only thing you need
to do is async_synchronize_full().
But one of the nice things about using just the trivial rwlock model and
letting any async users just depend on that is that we could easily just
depend entirely on those device locks, and allow drivers to do async
shutdowns other ways too.
For example, I could imagine some driver just doing an async suspend (or
resume) that gets completed in an interrupt context, rather than being
done by 'async_schedule()' at all.
So in many ways it's nicer to serialize by just doing
serialize_all_PM_events()
{
for_each_device() {
down_write(dev->lock);
up_write(dev->lock);
}
}
rather than depend on something like async_synchronize_full() that
obviously waits for all async events, but doesn't have the capability to
wait for any other event that some random driver might be using.
[ That "down+up" is kind of stupid, but I don't think we have a "wait for
unlocked" rwsem operation. We could add one, and it would be cheaper for
the case where the device never did anything async at all, and didn't
really need to dirty that cacheline by doing that write lock/unlock
pair. ]
But that really isn't a big deal. I think it would be perfectly ok to also
just say "if you do any async PM, you need to use 'async_schedule()'
because that's all we're going to wait for". It's probably perfectly fine.
Linus
next prev parent reply other threads:[~2009-12-07 20:56 UTC|newest]
Thread overview: 235+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-05 21:16 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
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 [this message]
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=alpine.LFD.2.00.0912071249390.3560@localhost.localdomain \
--to=torvalds@linux-foundation.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=rjw@sisk.pl \
--cc=rui.zhang@intel.com \
--cc=stern@rowland.harvard.edu \
/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
all inboxes | Powered by JetHome®