On Monday, 28 May 2007 00:16, Kay Sievers wrote: > 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. Okay, so the solution is to convert the drivers to use request_firmware_nowait() instead of request_firmware() in their .resume() routines. Greetings, Rafael _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm