Thread (91 messages) read the whole thread 91 messages, 15 authors, 2012-01-03

Re: loading firmware while usermodehelper disabled.

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2012-01-01 02:21:50
Also in: lkml

On Sat, 31 Dec 2011, Oliver Neukum wrote:
Am Samstag, 31. Dezember 2011, 16:33:12 schrieb Alan Stern:
quoted
Nothing has changed in the USB layer -- it has always been true that
devices could be reset during a suspend/resume cycle.  This isn't a
matter of how the stack is written or anything like that; some
motherboards simply do not provide suspend power to their USB
controllers.  Or the firmware reinitializes the controllers and
attached devices during resume, forcing Linux's USB core to reset
every device on the affected buses.

When it comes to suspend/resume, there are almost no guarantees.  :-(
We are definitely going through do_unbind_rebind(). But I don't think
it matters why we got there. We seem to be calling probe() too early.
And we need to guarantee that a driver can request firmware in probe()

So something has changed in the resume code path further up.
For at least a year and a half, it has been true that rebinding takes
place during the complete phase of system resume.  Clearly that is too 
early to load firmware.  When do you think we should do it instead?  
And how should we keep track of which interfaces need rebinding?

Alan Stern

P.S.: Oliver, it looks like there's a bunch of dead code in
usb_suspend_interface() and usb_resume_interface().  I don't see how
either one can be executed with a driver that doesn't have both suspend
and resume methods.  Such cases should be filtered out when
usb_suspend() calls do_unbind_rebind().  The only odd thing that can
happen is when a driver doesn't support reset-resume.  Do you agree?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help