From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: "linux-pm" <linux-pm@lists.linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>, Len Brown <lenb@kernel.org>,
Pavel Machek <pavel@ucw.cz>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
Arjan van de Ven <arjan@infradead.org>,
Zhang Rui <rui.zhang@intel.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Linux PCI <linux-pci@vger.kernel.org>
Subject: Re: [PATCH 2/6] PM: Asynchronous resume of devices
Date: Fri, 28 Aug 2009 21:38:14 +0200 [thread overview]
Message-ID: <200908282138.14602.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0908281137110.4116-100000@iolanthe.rowland.org>
On Friday 28 August 2009, Alan Stern wrote:
> On Wed, 26 Aug 2009, Rafael J. Wysocki wrote:
>
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> >
> > Theoretically, the total time of system sleep transitions (suspend
> > to RAM, hibernation) can be reduced by running suspend and resume
> > callbacks of device drivers in parallel with each other. However,
> > there are dependencies between devices such that, for example, we may
> > not be allowed to put one device into a low power state before
> > anohter one has been suspended (e.g. we cannot suspend a bridge
> > before suspending all devices behind it). In particular, we're not
> > allowed to suspend the parent of a device before suspending the
> > device itself. Analogously, we're not allowed to resume a device
> > before resuming its parent.
>
> > In this version of the patch the async threads started to execute
> > the resume callbacks of specific device don't exit immediately having
> > done that, but search dpm_list for devices whose PM dependencies have
> > already been satisfied and execute their callbacks without waiting.
>
> Given this design, why bother to invoke device_resume() for the async
> devices? Why not just start up a bunch of async threads, each of which
> calls async_resume() repeatedly until everything is finished? (And
> rearrange async_resume() to scan the list first and do the actual
> resume second.)
>
> The same goes for the noirq versions.
I thought about that, but there are a few things to figure out:
- how many threads to start
- when to start them
- stop condition
I had a few ideas, but then I thought it would be simpler to start an async
thread when we know there's some async work to do (ie. there's an async
device to handle) and make each async thread browse the list just once (the
rationale is that we've just handled a device, so there's a chance there are
some devices with satisfied dependencies down the list).
Thanks,
Rafael
next prev parent reply other threads:[~2009-08-28 19:38 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-26 20:17 [PATCH 0/6] PM: Asynchronous suspend and resume of devices Rafael J. Wysocki
2009-08-26 20:20 ` [PATCH 1/6] PM: Introduce PM links framework Rafael J. Wysocki
2009-08-28 15:16 ` Alan Stern
2009-08-28 19:11 ` Rafael J. Wysocki
2009-08-26 20:21 ` [PATCH 2/6] PM: Asynchronous resume of devices Rafael J. Wysocki
2009-08-28 15:43 ` Alan Stern
2009-08-28 19:38 ` Rafael J. Wysocki [this message]
2009-08-28 19:59 ` Alan Stern
2009-08-28 22:22 ` Rafael J. Wysocki
2009-08-28 23:20 ` Rafael J. Wysocki
2009-08-29 2:06 ` Alan Stern
2009-08-29 12:49 ` Rafael J. Wysocki
2009-08-29 19:17 ` Rafael J. Wysocki
2009-08-30 0:53 ` Alan Stern
2009-08-30 0:48 ` Alan Stern
2009-08-30 13:15 ` Rafael J. Wysocki
2009-08-30 21:13 ` [PATCH 10] PM: Measure suspend and resume times for individual devices (was: Re: [PATCH 2/6] PM: Asynchronous resume of devices) Rafael J. Wysocki
2009-08-31 7:25 ` Ingo Molnar
2009-08-31 12:53 ` Rafael J. Wysocki
2009-08-31 13:52 ` Ingo Molnar
2009-08-31 15:56 ` Rafael J. Wysocki
2009-08-31 21:32 ` [PATCH 10 update] PM: Measure suspend and resume times for individual devices Rafael J. Wysocki
2009-09-04 7:51 ` [PATCH 10] PM: Measure suspend and resume times for individual devices (was: Re: [PATCH 2/6] PM: Asynchronous resume of devices) Ingo Molnar
2009-09-04 14:42 ` Rafael J. Wysocki
2009-09-04 19:12 ` Ingo Molnar
2009-09-04 21:56 ` [PATCH 10 update 2x] PM: Measure suspend and resume times for individual devices Rafael J. Wysocki
2009-09-06 4:44 ` Ingo Molnar
2009-09-06 12:13 ` Rafael J. Wysocki
2009-08-31 14:09 ` [PATCH 10] PM: Measure suspend and resume times for individual devices (was: Re: [PATCH 2/6] PM: Asynchronous resume of devices) Alan Stern
2009-08-31 16:00 ` Rafael J. Wysocki
2009-08-30 6:45 ` [PATCH 2/6] PM: Asynchronous resume of devices Pavel Machek
2009-08-30 13:09 ` Rafael J. Wysocki
2009-08-26 20:21 ` [PATCH 3/6] PM: Asynchronous suspend " Rafael J. Wysocki
2009-08-26 20:22 ` [PATCH 4/6] PM: Allow PCI devices to suspend/resume asynchronously Rafael J. Wysocki
2009-08-26 20:23 ` [PATCH 5/6] PM: Allow ACPI " Rafael J. Wysocki
2009-08-26 20:24 ` [PATCH 6/6] PM: Allow serio input " Rafael J. Wysocki
2009-08-27 20:08 ` Dmitry Torokhov
2009-08-27 20:58 ` Rafael J. Wysocki
2009-08-26 22:25 ` [PATCH 0/6] PM: Asynchronous suspend and resume of devices Rafael J. Wysocki
2009-08-27 19:17 ` Rafael J. Wysocki
2009-08-27 19:19 ` [PATCH 7] PM: Add a switch for disabling/enabling asynchronous suspend/resume Rafael J. Wysocki
2009-08-27 20:07 ` Dmitry Torokhov
2009-08-27 22:22 ` [PATCH 7 updated] " Rafael J. Wysocki
2009-08-28 5:22 ` Dmitry Torokhov
2009-08-28 19:42 ` Rafael J. Wysocki
2009-08-27 19:20 ` [PATCH 8] PM: Allow user space to change the power.async_suspend flag of devices Rafael J. Wysocki
2009-08-27 20:04 ` Dmitry Torokhov
2009-08-27 22:24 ` Rafael J. Wysocki
2009-08-28 7:01 ` Pavel Machek
2009-08-29 19:20 ` [PATCH 8 update] " Rafael J. Wysocki
2009-08-27 20:46 ` [PATCH 0/6] PM: Asynchronous suspend and resume " Alan Stern
2009-08-27 21:18 ` Rafael J. Wysocki
2009-08-29 19:22 ` [PATCH 9] PM: Measure device suspend and resume times (was: Re: [PATCH 0/6] PM: Asynchronous suspend and resume of devices) 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=200908282138.14602.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=arjan@infradead.org \
--cc=dmitry.torokhov@gmail.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=pavel@ucw.cz \
--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