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

Kay Sievers
2007-05-27T22:16:06Z

On Sun, 2007-05-27 at 23:04 +0100, Matthew Garrett wrote:
> On Sun, May 27, 2007 at 11:49:30PM +0200, Kay Sievers wrote:
>
> > What exactly is the problem we see here? The timeout of the firmware loader?
> > What goes wrong with frozen userspace, usually there is only a netlink
> > message sent from the kernel, which should be received and handled
> > just fine when userspace is running again.
>
> Driver calls request_firmware in the resume method. The userspace helper
> can't be run because it's been frozen, so the firmware never gets loaded
> and the call times out. The driver then fails to resume. While all this
> is happening, the rest of the kernel is blocking on that resume method.
> The firmware can be loaded once userspace has been started again, but by
> that time the driver has given up.

Seems, that's just the broken synchronous firmware loading interface
with the useless timeout handling. The nowait version of the same loader
doesn't time out, and should not have that problem. The sync version
should be removed from the kernel, it just causes all sorts of problems
since it exists.

Userspace should handle the async request just fine when it comes back
running, regardless of the time it was submitted.

Kay