Re: [GIT *] Allow request_firmware() to be satisfied from in-kernel, use it in more drivers.



From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 14 Jul 2008 16:41:19 -0700

On Mon, 14 Jul 2008 16:23:26 -0700
David Woodhouse <dwmw2@xxxxxxxxxxxxx> wrote:

Linus, please pull from the for-2.6.27 branch of:
git://git.infradead.org/users/dwmw2/firmware-2.6.git for-2.6.27

The firmware flamewars seem to have subsided lately. Is everyone happy
with this now?

I'm not happy for network drivers, although I'm happy to see that
David respected out NACKs on tg3/bnx2/etc. and didn't include those
bits.

I still haven't seen an answer to the chip reset issues. The argument
has been that this stuff is going to save kernel memory when the
driver isn't loading firmware, but that's not really possible.

When a lot of these network drivers reset, due to a transmit timeout
or other exception, we need to load the firmware again.

So this means, that if request_firmware() dies or fails for some
reason in these scenerios, we can't reset the network card. Something
as simple as a memory or other allocation failure deep inside of
request_firmware() means we lose the networking interface.

To me this seems like a very non-resilient setup. It makes sense
to just keep the firmware in-core so we can load it without having
to even think about possible failures.

And that to me basically makes this transformation pointless. It's
in fact a regression.

Furthermore, the issue of suspend and resume was brought up. What if
request_firmware() fails then? And can request_firmware() even be
allowed in that context? What if the disk on which the firmware
resides hasn't been resumed yet?

In response to the suspend/resume queries, a lot of special voodoo was
mentioned that perhaps would allow request_firmware() to get invoked
in the correct context and with the firmware partition's block device
resumed already.

But who the heck is going to write all of that code and fix up all
of these drivers so that they can resume reliably again?

And for what?

None of the people who wrote and maintain these effected networking
drivers want these changes installed. And they are the ones who will
have to diagnose strange request_firmware() failures that lead to
non-functioning devices during resume or after a transmit timeout.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: [GIT *] Allow request_firmware() to be satisfied from in-kernel, use it in more drivers.
    ... On Mon, 14 Jul 2008, David Woodhouse wrote: ... completely static kernel image like I always could. ... we recognise that a monolithic kernel can have the firmware embedded in it. ... it suddenly so important for a small handful of older network drivers, ...
    (Linux-Kernel)
  • Re: Ubuntu is not free.
    ... Network ... drivers _must_ be on the CD. ... And you also don't know what firmware is. ... "The reasonable man adapts himself to the world; ...
    (Ubuntu)
  • Group Policy loading
    ... connected in to the network. ... wireless newsgroup) that Group Policy is just timing out. ... >>latest Dell and Buffalo firmware and drivers but to no ... >>file to match that of the Dell TrueMobile card. ...
    (microsoft.public.win2000.group_policy)
  • Re: Is onboard NIC kaput? (ipconfig output: Unable to query host name.)
    ... network properties, reboot, then reinstall. ... Have you tried updating your MB drivers? ... followed the installation instructions carefully and when all was said ... uninstalled the NIC in the Device Manager, ...
    (microsoft.public.windowsxp.hardware)
  • Re: [TIP] BUG kmalloc-4096: Poison overwritten (ath5k_rx_skb_alloc)
    ... I had been utterly unable to reproduce the error on any network with ... a stock 2.6.29-rc6 kernel. ... Note that I was able to reproduce it again:) ... # Enable WiMAX to see the WiMAX drivers ...
    (Linux-Kernel)