kernel-libre (hopefully 100% Free) for Fedora 8 and rawhide

Bob Arendt rda at rincon.com
Sat Mar 29 22:48:16 UTC 2008


jeff wrote:
> Alexandre Oliva wrote:
>> Hi,
>>
>> I've stripped non-Free firmware bits from Fedora kernels for F8 and
>> rawhide, starting from tools developed by the gNewSense folks and now
>> in use by BLAG developers, and built alternate kernels that I've
>> successfully booted up and used on my x86_64 notebook.
> 
> I just became aware of this thread today. I don't bring BLAG issues to 
> Fedora lists, but I felt I should add some info to put linux-libre in 
> context. I hope you don't mind--I'll immediately go back to lurking and 
> have no intention of getting involved in a debate on this list about the 
> merits/relevancy of this.   :)
> 
> 
> ====================================================
> 
> The official "vanilla" Linux kernel from Linus that gets distributed on 
> kernel.org has non-free[1] software in it. Here is one example from 
> linux-2.6.24/drivers/net/tg3.c:
> 
> 
> /*
>   * tg3.c: Broadcom Tigon3 ethernet driver.
>   *
>   * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem at redhat.com)
>   * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik at pobox.com)
>   * Copyright (C) 2004 Sun Microsystems Inc.
>   * Copyright (C) 2005-2007 Broadcom Corporation.
>   *
>   * Firmware is:
>   *      Derived from proprietary unpublished source code,
>   *      Copyright (C) 2000-2003 Broadcom Corporation.
>   *
>   *      Permission is hereby granted for the distribution of this firmware
>   *      data in hexadecimal or equivalent format, provided this copyright
>   *      notice is accompanying it.
>   */
> 
> 
> It then has screenfulls of non-free code like this:
> 
> 0x0e000003, 0x00000000, 0x08001b24, 0x00000000, 0x10000003, 0x00000000,
> 0x0000000d, 0x0000000d, 0x3c1d0800, 0x37bd4000, 0x03a0f021, 0x3c100800,
> 0x26100000, 0x0e000010, 0x00000000, 0x0000000d, 0x27bdffe0, 0x3c04fefe,
   ...
> 
> Why Linus Torvalds tolerates and distributes this I have no idea. He 
> surely has some rationale buried in a LKML flamewar somewhere, but it 
> doesn't change the fact that there is clearly non-Free code in the Linux 
> kernel.
> 
> 
     <<< snip >>>

Hmmm .... if you look at the actual tg3 driver:
static const u32 tg3TsoFwText[(TG3_TSO_FW_TEXT_LEN / 4) + 1] = {
         0x0e000003, 0x00000000, 0x08001b24, 0x00000000, 0x10000003, 0x00000000,

This is firmware that gets loaded in routine tg3_load_tso_firmware().
It's firmware for a chip that you don't have a compiler for (if a compiler
exists - there may be a different development model, say VHDL for a FPGA).
The other hex cases in tg3.c also appear to be firmware mods.   I'm glad this
is supplied in hex - I'd hate to need working cross-compilers for every
chip that has a firmware blob in order to build a kernel.

As you note, there are several examples of this throughout the kernel.
Others in this thread have explained why firmware is *not* host software,
and is (and should be) allowed to be shipped in a binary format.

Cheers,
-Bob Arendt





More information about the devel mailing list