[SRU][kernel-snaps-uc20][PATCH 0/1] Ucore kernel snap size: netronome smartnic fw (LP: #1951422)

Juerg Haefliger juerg.haefliger at canonical.com
Thu Jan 13 15:14:55 UTC 2022


[ Impact ]

Pi kernel snaps are big in part due to included firmware binaries. A lot of these binaries are not needed/required by the Pi kernel. The size of the snap has a negative impact on boot speed.

[ Fix ]

Parse modinfo data from all modules to determine the list of required firmware files and remove the ones that are not necessary during snap build time.

[ Test Case ]

On core20 before:
$ du -sh /lib/firmware/
602M	/lib/firmware/

And after:
$ du -sh /lib/firmware/
58M	/lib/firmware/

[ Where Problems Could Occur ]

We might accidentally drop needed firmware which might render the relevant HW unusable. Firmware load failures should be visible in the kernel log though.

[ Original Description ]

The size of the pi-kernel snap for UC20 is 254Mbytes (compressed) and
794Mbytes (uncompressed).

569Mbyte of this is caused by FW

140Mbyte -> Netronome SmartNIC

Removing unreferenced FW and/or reducing number of drivers & their FW has exponential reduction of disk space usage.

Additionally, downloaded image will be smaller; and storing 3x kernel snaps for upgrades will be smaller.

Even more, snap seeding will be faster, so boot time will be faster.

So it will be a nice gain in multiple aspects: download image, boot image, upgrade image, reboot image, start using image.

stulluk ~/tmp $  ls -lah pi-kernel_353.snap
-rw------- 1 stulluk stulluk 254M Kas  8 13:57 pi-kernel_353.snap
stulluk ~/tmp $  cd pikern/
stulluk ~/tmp/pikern $  du -sh
794M	.
stulluk ~/tmp/pikern $  cd firmware/
stulluk ~/tmp/pikern/firmware $  du --block-size=MiB --max-depth=1 . | sort -rn
569MiB	.
140MiB	./netronome
40MiB	./amdgpu
34MiB	./intel
25MiB	./liquidio
24MiB	./qcom
20MiB	./qed
19MiB	./brcm
12MiB	./mellanox
12MiB	./dpaa2
12MiB	./ath10k
...

Juerg Haefliger (1):
  Remove unnecessary firmware binaries

 Makefile      |  4 ++++
 trim-firmware | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100755 trim-firmware

-- 
2.30.2




More information about the kernel-team mailing list