Re: loading firmware while usermodehelper disabled.

Jack Stone
2012-01-02T23:32:05Z

On 02/01/12 23:00, Matthew Garrett wrote:
> On Mon, Jan 02, 2012 at 02:46:56PM -0800, Linus Torvalds wrote:
>
>> It's *trivial* to attach the firmware driver and load the firmware
>> even if the firmware isn't needed - because you know it *will* be
>> needed if somebody suspends. Why not just do that? Why make up these
>> horrible problems that are totally irrelevant?
>
> It means adding complexity to drivers that don't currently care about
> it, and carrying that cost even for hardware that doesn't need it. It
> can certainly be made to work, but it's inelegant. We could avoid this
> specific instance of the problem by just punting responsibility to
> userland instead.
>
> It's clear that we can solve this. All I'm saying is that just making
> the firmware loader cache things isn't a solution in itself. In this
> specific case, it means merging the isight_firmware driver into
> uvcvideo, which is something the uvcvideo maintainer didn't seem keen on
> a few years ago.
>

Rather than merging the drivers we could make the uvcvideo (or any other
generic driver) driver expose a "subdriver" interface that allows
another module to bind to the specific ID and add extra handling to
certain events. We could then use that interface to provide a firmware
driver for each device that needs it. The firmware driver could bind to
the bootstrap device and to the uvcvideo subdriver interface and it
would then have all the lifetime info we need. [Credit to Linus for
suggesting this idea]

You mensioned earlier about not being able to tell the difference
between a device that needs firmware and one that needs flash (e.g. they
use exactly the same ids). It doesn't really matter - we just assume
that it might need firmware and load it anyway. It uses more memory but
is robust.

Also, as Linus mensioned, for some devices we just don't care. For
example, if we drop a video call over suspend it's not ideal but it
doesn't prevent the system from resuming. Lets concentrate on fixing all
the cases that could prevent resume (the "99%") and fix the other
devices later.

Thanks,

Jack