Thread (91 messages) 91 messages, 15 authors, 2012-01-03

Re: loading firmware while usermodehelper disabled.

From: Marek Vasut <hidden>
Date: 2012-01-02 21:52:28
Also in: lkml

On 02/01/12 21:23, Linus Torvalds wrote:
quoted
On Mon, Jan 2, 2012 at 1:09 PM, Jack Stone [off-list ref] wrote:
quoted
What about USB "class" drivers e.g. usb-storage. They handle any device
that reports itself as a usb mass storage device. There could be a
device that needs to be bootstrapped before it becomes a generic usb
mass storage device. Do we really want to have to write a new driver
that is almost identical to the generic driver but handles the USB
firmware correctly.
I'd hope that the generic driver just expose enough interfaces that
you could basically do a "firmware-load" driver that just loads the
firmware and then attaches the device to the generic driver.
Sounds workable.

To make the firmware caching easier I would propose one extra function
in addition to the aforemensioned get_firmware / put_firmware - a
find_firmware function to search the cache and return the appropriate
firmware blob. It should only be called if the caller already has a
refcount to the firmware, it's only use is to save every driver saving a
pointer to the firmware.

If noone beats me to it I will try and put together an RFC for a new
version.
The problem is on systems with limited resources, most notably RAM. If you plug 
in many devices at once, many firmwares will be cached at one point, efectivelly 
doing DoS attach on the machine?

Also, how will this solve the suspect-resume issue? What if the device suspends 
only occasionally -- like every 24 hours -- then you'd have the FW cached all 
the time too?

M
Thanks,

Jack

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help