From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Linux-pm mailing list <linux-pm@lists.linux-foundation.org>,
Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: [linux-pm] Fundamental flaw in system suspend, exposed by freezer removal
Date: Mon, 25 Feb 2008 23:25:09 +0100 [thread overview]
Message-ID: <200802252325.09439.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0802251439030.5536-100000@iolanthe.rowland.org>
On Monday, 25 of February 2008, Alan Stern wrote:
> On Mon, 25 Feb 2008, Alan Stern wrote:
>
> > The only possible solution is to have the drivers themselves be
> > responsible for preventing calls to device_add() or device_register()
> > during a system sleep. (It's also necessary to prevent driver binding,
> > but this isn't a major issue.) The most straightforward approach is to
> > add a new pair of driver methods: one to disable adding children and
> > one to re-enable it. Of course this would represent a significant
> > addition to the Power Management driver interface.
> >
> > (Note that the existing suspend and resume methods cannot be used for
> > this purpose. Drivers assume that when the suspend method is called,
> > it has already been called for all the child devices. This wouldn't be
> > true if one of the purposes of the method was to prevent addition of
> > new children.)
>
> On further thought maybe the existing methods can be used, with care.
> Drivers would have to assume the responsibility of synchronizing with
> their helper threads and stopping addition of new children (something
> they should already be doing), and they would also have to check that
> all the existing children are already suspended. They should not make
> the assumption that the PM core has already suspended all the children.
IMO the device driver should assure that no new children will be registered
concurrently with the ->suspend() method (IOW, ->suspend() should wait for
all such registrations to complete and should prevent any new ones from
being started) and it should make it impossible to register any new children
after ->suspend() has run. It's the driver's problem how to achieve that.
> The PM core could help detect errors here. If it tries to suspend a
> device and sees that the device's parent is already suspended, then the
> parent's driver has a bug.
Yes, I think we ought to fail the suspend in such cases. Still, that's not
sufficient to prevent a child from being registered after we've run
dpm_suspend(). For this reason, we could also leave dpm_suspend() with
dpm_list_mtx held and not release it until the next dpm_resume() is run.
That will potentially cause some trouble to CPU hotplug cotifiers, but we can
handle that, for example, by using the in_suspend_context() test.
Thanks,
Rafael
next prev parent reply other threads:[~2008-02-25 22:26 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-25 15:39 Fundamental flaw in system suspend, exposed by freezer removal Alan Stern
2008-02-25 19:46 ` Alan Stern
2008-02-25 19:46 ` [linux-pm] " Alan Stern
2008-02-25 22:25 ` Rafael J. Wysocki [this message]
2008-02-25 23:37 ` Alan Stern
2008-02-26 0:07 ` Rafael J. Wysocki
2008-02-26 0:07 ` [linux-pm] " Rafael J. Wysocki
2008-02-26 15:49 ` Alan Stern
2008-02-26 23:17 ` Rafael J. Wysocki
2008-02-27 16:03 ` Alan Stern
2008-02-27 16:03 ` [linux-pm] " Alan Stern
2008-02-27 19:50 ` Rafael J. Wysocki
2008-02-27 19:50 ` [linux-pm] " Rafael J. Wysocki
2008-02-27 20:15 ` Alan Stern
2008-02-27 20:15 ` [linux-pm] " Alan Stern
2008-02-28 22:49 ` Alan Stern
2008-02-29 0:01 ` Rafael J. Wysocki
2008-02-29 0:01 ` [linux-pm] " Rafael J. Wysocki
2008-02-29 14:26 ` Rafael J. Wysocki
2008-02-29 15:53 ` Alan Stern
2008-02-29 17:02 ` Rafael J. Wysocki
2008-02-29 18:42 ` Alan Stern
2008-02-29 21:57 ` Rafael J. Wysocki
2008-02-29 21:57 ` [linux-pm] " Rafael J. Wysocki
2008-02-29 22:46 ` Alan Stern
2008-02-29 22:46 ` [linux-pm] " Alan Stern
2008-03-01 0:13 ` Rafael J. Wysocki
2008-03-01 15:30 ` Alan Stern
2008-03-02 13:37 ` Rafael J. Wysocki
2008-03-02 13:37 ` [linux-pm] " Rafael J. Wysocki
2008-03-02 16:22 ` Alan Stern
2008-03-02 19:11 ` Rafael J. Wysocki
2008-03-03 3:54 ` Alan Stern
2008-03-03 16:32 ` Rafael J. Wysocki
2008-03-03 16:32 ` [linux-pm] " Rafael J. Wysocki
2008-03-03 17:43 ` Alan Stern
2008-03-03 17:43 ` [linux-pm] " Alan Stern
2008-03-03 20:47 ` Rafael J. Wysocki
2008-03-03 22:48 ` Alan Stern
2008-03-03 22:48 ` [linux-pm] " Alan Stern
2008-03-03 22:56 ` Rafael J. Wysocki
2008-03-03 22:56 ` [linux-pm] " Rafael J. Wysocki
2008-03-03 23:12 ` Alan Stern
2008-03-03 23:18 ` Rafael J. Wysocki
2008-03-03 23:18 ` Rafael J. Wysocki
2008-03-03 23:12 ` Alan Stern
2008-03-03 20:47 ` Rafael J. Wysocki
2008-03-03 3:54 ` Alan Stern
2008-03-02 19:11 ` Rafael J. Wysocki
2008-03-02 16:22 ` Alan Stern
2008-03-01 15:30 ` Alan Stern
2008-03-01 0:13 ` Rafael J. Wysocki
2008-02-29 18:42 ` Alan Stern
2008-02-29 17:02 ` Rafael J. Wysocki
2008-02-29 15:53 ` Alan Stern
2008-02-29 14:26 ` Rafael J. Wysocki
2008-02-28 22:49 ` Alan Stern
2008-02-26 23:17 ` Rafael J. Wysocki
2008-02-26 15:49 ` Alan Stern
2008-02-25 23:37 ` Alan Stern
2008-02-26 7:13 ` [linux-pm] " David Brownell
2008-02-26 8:25 ` David Newall
2008-02-26 9:16 ` David Brownell
2008-02-26 9:16 ` [linux-pm] " David Brownell
2008-02-26 13:36 ` David Newall
2008-02-26 13:36 ` [linux-pm] " David Newall
2008-02-26 15:58 ` Alan Stern
2008-02-26 15:58 ` [linux-pm] " Alan Stern
2008-02-26 8:25 ` David Newall
2008-02-26 7:13 ` David Brownell
2008-02-25 22:25 ` Rafael J. Wysocki
2008-02-25 22:24 ` Rafael J. Wysocki
2008-02-25 22:24 ` Rafael J. Wysocki
2008-02-27 20:36 ` Benjamin Herrenschmidt
2008-02-27 20:36 ` Benjamin Herrenschmidt
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=200802252325.09439.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.