Re: [RFC][PATCH -mm 3/3] PM: Disable _request_firmware before hibernation/suspend

Michael-Luke Jones
2007-05-27T20:45:35Z

On 27 May 2007, at 21:31, Rafael J. Wysocki wrote:

> From: Rafael J. Wysocki <rjw@sisk.pl>
>
> Use a hibernation and suspend notifier to disable the firmware
> requesting
> mechanism before a hibernation/suspend and enable it after the
> operation.
>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
>
> drivers/base/firmware_class.c | 36 ++++++++++++++++++++++++++++++
> ++++++
> 1 file changed, 36 insertions(+)

I don't like this approach, as I feel that the firmware loading
interface should be able to detect if a firmware load request is not
being handled, due to absence of userspace / hotplug handler presence.

Other circumstances in which this can be a problem is during bootup
when request_firmware() calls can be made before userspace is up and
init has run (even in the presence of an initramfs).

(Slightly OT: A particularly nasty race is when an initramfs
userspace is present, but firmware loading cannot occur because init
has not run, so proc hasn't been mounted, so a hotplug event handler
cannot be registered, despite the fact that the firmware is sitting
on the ramdisk mounted correctly...)

In short, a more general solution would be preferred, and preferably
one which allows firmware loading to *actually* occur once userspace
has actually turned up and registered a handler :)

Michael-Luke Jones