Re: Question on adding a firmware ihex file in the kernel source

From: Murali Karicheri
Date: Wed Sep 02 2015 - 12:55:20 EST


On 08/20/2015 07:15 PM, David Woodhouse wrote:
On Thu, 2015-08-20 at 17:46 -0400, Murali Karicheri wrote:
All,

Please help me understand the procedure to add a firmware ihex file to
kernel source tree under firmware/ folder. The README.AddingFirmware
file explains that file should be added to
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git and
the patch for the same to be send to linux-firmware@xxxxxxxxxxx And this
requires it to be in binary form. How does then that end up in the
firmware/ folder of the Linux source tree as an ihex file?

You cannot do that. The old firmware/ directory in the source tree is
incomplete, out of date and scheduled for deletion.

Firmware should *only* go into the separate linux-firmware.git
repository.

I would like to have one of the firmware statically built into the
kernel as it is needed to be loaded even before file system is
initialized in kernel (network driver firmware).

Do not do that. It is believed by many to be a violation of the GPL.

If the firmware is needed to mount the root file system, then you can
put it into an initramfs and load it that way, rather than building it
into the GPL'd kernel image.
Can you point me to a script in initramfs that I can use to switch rootfs using switch_root during kernel boot up?

For example, in my case, the PCIe serdes firmware is required to initialize PCIe to use SATA harddisk. So I plan to put the firmware in initramfs to request_firmware() and initialize the serdes so that PCIe become functional so that at a later point in bootup, I can switch my rootfs to the rootfs on harddisk using switch_root

Murali





--
Murali Karicheri
Linux Kernel, Keystone
--
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/