> It's not a workaround, but how it's supposed to work.  "Loading from
> userspace" means using a user-space program to load the firmware.  This
> is not what you're trying to do, since you don't have such a program.

? Udev has been the standard way to service kernel firmware requests for
quite some time. The relevant bit is in
/lib/udev/rules.d/50-firmware.rules .

However, udevd is only started after the kernel is loaded, and therefore
will only load firmware for drivers which are built as modules.

Firmware for built-in drivers must either be compiled into the kernel or
be provided in an initrd along with a suitable helper.

Is there a specific reason why the r8169 driver cannot be loaded as a
module? AFAIK the only case in which you *need* a built-in net driver is
if you're doing root over NFS.

> Your other option is writing a userspace program that reads the firmware
> after the kernel has booted and patches it into the hardware.

Patching is always done by the kernel driver. The userspace helper only
has to answer kernel requests for a specific firmware by providing the
correct data.

> But why would you want to do something like that anyway?

Typical reasons are to keep the kernel image size down and to avoid
having to recompile the kernel whenever a new firmware version is
released. Though I'll admit that kernel releases tend to be more
frequent than new firmware versions :)

Just my .02€

andrea

Reply via email to