Subject: Re: [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin"

From: Jeff Garzik <[email-masked]>
Date: Sat, 05 Jul 2008 00:35:52 -0400

Theodore Tso wrote:
> On Fri, Jul 04, 2008 at 09:39:36AM -0400, Jeff Garzik wrote:
>> You have been told repeatedly that cp(1) and scp(1) are commonly used to  
>> transport the module David and I care about -- tg3.  It's been a single  
>> file module since birth, and people take advantage of that fact.
> 
> Here, I think I'll have to respectly disagree with you and say that
> you are taking things too far.  I don't think scp'ing individual
> modules around counts as an "exported user interface" the same way,
> say "make install; make modules_install" is a commonly understand and
> used interface by users and scripts (i.e., such as Debian's make-kpkg,
> which does NOT know about "make firmware_install", BTW).

It's not just netdev developers that use that method, root (notably 
router) image and driver disk build scripts use it too.  They've been 
able to skate around module dependencies because network drivers rarely 
have module dependencies or require big multi-module systems.

Example -- the driver disk kit that RH informally gave out, which was 
widely used, but does not use normal kernel build processes:

	http://people.redhat.com/dledford/mod_devel_kit.tgz

Even if one modifies 'make modules_install' as discussed[1], kits like 
these will report "100% success! driver disk created", yet ship a dead 
driver disk.

That is why putting the firmware in the kernel image, as dwmw2 has done, 
does not fix regressions here:  driver disk authors do not necessarily 
have the luxury of updating the kernel.

Conclusion - we should not build a system today that /excludes/ the 
possibility of building drivers as they are built today -- with the 
firmware inside the module [if CONFIG_FOO=m] or kernel image [if 
CONFIG_FOO=y].

That is the only path that gives everyone a chance to deal with this 
transition.

	Jeff

[1] a laudable and useful thing to do, and it sounds like it is being 
accomplished.  great!