Re: [linux-pm] Fundamental flaw in system suspend, exposed by freezerremoval
From: Alan Stern
Date: Mon Feb 25 2008 - 14:47:01 EST
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.
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.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/