Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quest to reduce firmware size #590

Closed
5 tasks done
tlaurion opened this issue Jun 28, 2019 · 58 comments
Closed
5 tasks done

Quest to reduce firmware size #590

tlaurion opened this issue Jun 28, 2019 · 58 comments

Comments

@tlaurion
Copy link
Collaborator

tlaurion commented Jun 28, 2019

Hello guys/gals

There is tickets opened to:

The priorities should be, see below for binaries/libraries footprints:

  • Reduce libgcrypt.so.20 footprint (1145176 uncompressed bytes)
  • Reduce lvm footprint (1599032 uncompressed bytes)
  • Reduce gpg footprint (869568 uncompressed bytes)
  • libcairo.so.2 footprint (851968 uncompressed bytes)
  • libpixman-1.so.0 footprint (667048 uncompressed bytes)

EDIT: one liner to decompress and differenciate builds space

To help in finding consumed space, here is what I do.

make BOARD=x230
cd build/x230/
xz --decompress initrd.cpio.xz
cpio --extract < initrd.cpio
cpio --extract < heads.cpio
cpio --extract < modules.cpio

find . -type f -ls | sort -r -n -k7

789884 12288 -rw-r--r-- 1 user user 12582912 Jun 28 13:00 ./coreboot.rom
789885 11912 -rw-r--r-- 1 user user 12212224 Jun 28 13:00 ./initrd.cpio
789821 10648 -rw-r--r-- 1 user user 10903552 Jun 28 13:00 ./tools.cpio
789880 2868 -rw-r--r-- 1 user user 2936832 Jun 28 12:59 ./bzImage
789986 1564 -rwx------ 1 user user 1599032 Jun 28 13:01 ./bin/lvm
790106 1120 -rwx------ 1 user user 1145176 Jun 28 13:01 ./lib/libgcrypt.so.20
789881 968 -rw-r--r-- 1 user user 989696 Jun 28 12:59 ./modules.cpio
789943 852 -rwx------ 1 user user 869568 Jun 28 13:01 ./bin/gpg
790103 832 -rwx------ 1 user user 851968 Jun 28 13:01 ./lib/libcairo.so.2
790113 652 -rwx------ 1 user user 667048 Jun 28 13:01 ./lib/libpixman-1.so.0
790102 556 -rwx------ 1 user user 568680 Jun 28 13:01 ./lib/libc.so
789938 480 -rwx------ 1 user user 490640 Jun 28 13:01 ./bin/flashrom
789900 476 -rwx------ 1 user user 486024 Jun 28 13:01 ./bin/busybox
790018 384 -rwx------ 1 user user 391760 Jun 28 13:01 ./bin/scdaemon
789944 352 -rwx------ 1 user user 359960 Jun 28 13:01 ./bin/gpg-agent
790117 328 -rwx------ 1 user user 332504 Jun 28 13:01 ./lib/libtpm.so
790105 320 -rwx------ 1 user user 324784 Jun 28 13:01 ./lib/libdevmapper.so.1.02
789882 316 -rw-r--r-- 1 user user 321024 Jun 28 13:00 ./heads.cpio
790109 312 -rwx------ 1 user user 318464 Jun 28 13:01 ./lib/libmbedcrypto.so.0
790123 292 -rw------- 1 user user 295688 Jun 28 13:01 ./lib/modules/e1000e.ko
790108 216 -rwx------ 1 user user 217192 Jun 28 13:01 ./lib/libksba.so.8
790114 200 -rwx------ 1 user user 201096 Jun 28 13:01 ./lib/libpng16.so.16
789925 180 -rwx------ 1 user user 180960 Jun 28 13:01 ./bin/dropbear
790037 172 -rwx------ 1 user user 172544 Jun 28 13:01 ./bin/ssh
790127 168 -rw------- 1 user user 170512 Jun 28 13:01 ./lib/modules/mmc_core.ko
790131 160 -rw------- 1 user user 160792 Jun 28 13:01 ./lib/modules/xhci-hcd.ko
789960 156 -rwx------ 1 user user 158952 Jun 28 13:01 ./bin/kexec
790104 156 -rwx------ 1 user user 155744 Jun 28 13:01 ./lib/libcryptsetup.so.4
789924 132 -rwx------ 1 user user 133216 Jun 28 13:01 ./bin/dmsetup
790130 132 -rw------- 1 user user 132520 Jun 28 13:01 ./lib/modules/usb-storage.ko
790051 124 -rwx------ 1 user user 122992 Jun 28 13:01 ./bin/tpm
790107 120 -rwx------ 1 user user 120024 Jun 28 13:01 ./lib/libgpg-error.so.0
790097 108 -rw------- 1 user user 108800 Jun 28 13:01 ./etc/wordlist_en_eff.txt
790121 108 -rwx------ 1 user user 107512 Jun 28 13:01 ./lib/libz.so.1
790119 96 -rwx------ 1 user user 98064 Jun 28 13:01 ./lib/libusb-1.0.so.0
789983 76 -rwx------ 1 user user 73920 Jun 28 13:01 ./bin/lspci
790101 72 -rwx------ 1 user user 73416 Jun 28 13:01 ./lib/libassuan.so.0
790124 68 -rw------- 1 user user 66208 Jun 28 13:01 ./lib/modules/ehci-hcd.ko
789914 64 -rwx------ 1 user user 62680 Jun 28 13:01 ./bin/cryptsetup-reencrypt
789913 56 -rwx------ 1 user user 55760 Jun 28 13:01 ./bin/cryptsetup
790129 52 -rw------- 1 user user 53136 Jun 28 13:01 ./lib/modules/sdhci.ko
790004 52 -rwx------ 1 user user 52520 Jun 28 13:01 ./bin/pinentry-tty
790126 52 -rw------- 1 user user 49352 Jun 28 13:01 ./lib/modules/mmc_block.ko
789934 48 -rwx------ 1 user user 49032 Jun 28 13:01 ./bin/fbwhiptail
790112 48 -rwx------ 1 user user 48672 Jun 28 13:01 ./lib/libpci.so.3.5.4
790111 48 -rwx------ 1 user user 48672 Jun 28 13:01 ./lib/libpci.so.3
790115 48 -rwx------ 1 user user 45160 Jun 28 13:01 ./lib/libpopt.so.0
790116 44 -rwx------ 1 user user 43864 Jun 28 13:01 ./lib/libqrencode.so.3
790128 40 -rw------- 1 user user 38104 Jun 28 13:01 ./lib/modules/sdhci-pci.ko
790089 36 -rwx------ 1 user user 35654 Jun 28 13:01 ./etc/functions
790068 32 -rwx------ 1 user user 29584 Jun 28 13:01 ./bin/veritysetup
789977 32 -rwx------ 1 user user 29568 Jun 28 13:01 ./bin/libremkey_hotp_verification
789906 24 -rwx------ 1 user user 23696 Jun 28 13:01 ./bin/cbmem
789940 24 -rwx------ 1 user user 21064 Jun 28 13:01 ./bin/flashtool
790019 20 -rwx------ 1 user user 20400 Jun 28 13:01 ./bin/scp
790087 20 -rw------- 1 user user 19992 Jun 28 13:01 ./etc/distro/keys/tails.key
790118 20 -rwx------ 1 user user 18800 Jun 28 13:01 ./lib/libusb-0.1.so.4
789949 20 -rwx------ 1 user user 16936 Jun 28 13:01 ./bin/gui-init
789904 16 -rwx------ 1 user user 15368 Jun 28 13:01 ./bin/cbfs
790110 16 -rwx------ 1 user user 14912 Jun 28 13:01 ./lib/libnpth.so.0
790056 16 -rwx------ 1 user user 14464 Jun 28 13:01 ./bin/uefi
790120 16 -rwx------ 1 user user 13984 Jun 28 13:01 ./lib/libuuid.so.1
790085 16 -rw------- 1 user user 12413 Jun 28 13:01 ./etc/distro/keys/fedora.key
789879 12 -rw-r--r-- 1 user user 11225 Jun 28 13:00 ./hashes.txt
790007 12 -rwx------ 1 user user 10776 Jun 28 13:01 ./bin/poke
790125 12 -rw------- 1 user user 10592 Jun 28 13:01 ./lib/modules/ehci-pci.ko
790132 12 -rw------- 1 user user 10456 Jun 28 13:01 ./lib/modules/xhci-pci.ko
789931 12 -rwx------ 1 user user 10409 Jun 28 13:01 ./bin/factory-reset-libremkey.sh
789969 12 -rwx------ 1 user user 10093 Jun 28 13:01 ./bin/kexec-select-boot
789945 12 -rwx------ 1 user user 8780 Jun 28 13:01 ./bin/gpg-gui.sh
790014 12 -rwx------ 1 user user 8581 Jun 28 13:01 ./bin/reencrypt-luks
789966 8 -rwx------ 1 user user 7944 Jun 28 13:01 ./bin/kexec-save-default
790002 8 -rwx------ 1 user user 7872 Jun 28 13:01 ./bin/peek
789993 8 -rwx------ 1 user user 7556 Jun 28 13:01 ./bin/mount-sdcard
790049 8 -rwx------ 1 user user 7448 Jun 28 13:01 ./bin/totp
789957 8 -rwx------ 1 user user 7064 Jun 28 13:01 ./bin/hotp
789896 8 -rwx------ 1 user user 6832 Jun 28 13:01 ./bin/base32
790011 8 -rwx------ 1 user user 5304 Jun 28 13:01 ./bin/qrenc
789968 8 -rwx------ 1 user user 4972 Jun 28 13:01 ./bin/kexec-seal-key
789994 8 -rwx------ 1 user user 4185 Jun 28 13:01 ./bin/mount-usb
789965 4 -rwx------ 1 user user 3654 Jun 28 13:01 ./bin/kexec-parse-boot
790098 4 -rwx------ 1 user user 3622 Jun 28 13:01 ./init
789910 4 -rwx------ 1 user user 3329 Jun 28 13:01 ./bin/config-gui.sh
789961 4 -rwx------ 1 user user 3099 Jun 28 13:01 ./bin/kexec-boot
790020 4 -rwx------ 1 user user 2753 Jun 28 13:01 ./bin/seal-libremkey
789970 4 -rwx------ 1 user user 2628 Jun 28 13:01 ./bin/kexec-sign-config
789962 4 -rwx------ 1 user user 2379 Jun 28 13:01 ./bin/kexec-insert-key
789937 4 -rwx------ 1 user user 2107 Jun 28 13:01 ./bin/flash.sh
789936 4 -rwx------ 1 user user 2077 Jun 28 13:01 ./bin/flash-gui.sh
790066 4 -rwx------ 1 user user 2070 Jun 28 13:01 ./bin/usb-scan
789964 4 -rwx------ 1 user user 2033 Jun 28 13:01 ./bin/kexec-parse-bls
790021 4 -rwx------ 1 user user 2027 Jun 28 13:01 ./bin/seal-totp
790061 4 -rwx------ 1 user user 1839 Jun 28 13:01 ./bin/unseal-hotp
789883 4 -rw------- 1 user user 1748 Jun 28 13:01 ./.ash_history
789967 4 -rwx------ 1 user user 1689 Jun 28 13:01 ./bin/kexec-save-key
790086 4 -rw------- 1 user user 1629 Jun 28 13:01 ./etc/distro/keys/qubes-4.key
789921 4 -rwx------ 1 user user 1552 Jun 28 13:01 ./bin/diceware.sh
789963 4 -rwx------ 1 user user 1375 Jun 28 13:01 ./bin/kexec-iso-init
790134 4 -rwx------ 1 user user 1373 Jun 28 13:01 ./mount-boot
789941 4 -rwx------ 1 user user 1299 Jun 28 13:01 ./bin/generic-init
789971 4 -rwx------ 1 user user 1119 Jun 28 13:01 ./bin/kexec-unseal-key
790151 4 -rwx------ 1 user user 1000 Jun 28 13:01 ./sbin/insmod
790052 4 -rwx------ 1 user user 983 Jun 28 13:01 ./bin/tpm-reset
789976 4 -rwx------ 1 user user 965 Jun 28 13:01 ./bin/libremkey_hotp_initialize
790140 4 -rwx------ 1 user user 922 Jun 28 13:01 ./sbin/config-dhcp.sh
789972 4 -rwx------ 1 user user 875 Jun 28 13:01 ./bin/key-init
789905 4 -rwx------ 1 user user 799 Jun 28 13:01 ./bin/cbfs-init
790082 4 -rw------- 1 user user 736 Jun 28 13:01 ./etc/config
789997 4 -rwx------ 1 user user 675 Jun 28 13:01 ./bin/network-init-recovery
790057 4 -rwx------ 1 user user 661 Jun 28 13:01 ./bin/uefi-init
790062 4 -rwx------ 1 user user 634 Jun 28 13:01 ./bin/unseal-totp
790074 4 -rwx------ 1 user user 574 Jun 28 13:01 ./bin/x230-flash.init
790012 4 -rwx------ 1 user user 366 Jun 28 13:01 ./bin/qubes-measure-luks
789939 4 -rwx------ 1 user user 360 Jun 28 13:01 ./bin/flashrom-kgpe-d16-openbmc.sh
790092 4 -rwx------ 1 user user 340 Jun 28 13:01 ./etc/keylime-init
790072 4 -rwx------ 1 user user 320 Jun 28 13:01 ./bin/wget-measure.sh
790013 4 -rwx------ 1 user user 258 Jun 28 13:01 ./bin/reboot
790065 4 -rwx------ 1 user user 220 Jun 28 13:01 ./bin/usb-init
790008 4 -rwx------ 1 user user 205 Jun 28 13:01 ./bin/poweroff
790088 4 -rw------- 1 user user 197 Jun 28 13:01 ./etc/fstab
790093 4 -rw------- 1 user user 174 Jun 28 13:01 ./etc/motd
789946 4 -rwx------ 1 user user 106 Jun 28 13:01 ./bin/gpgv
789888 4 -rw------- 1 user user 73 Jun 28 13:01 ./.gnupg/gpg-agent.conf
789920 4 -rwx------ 1 user user 62 Jun 28 13:01 ./bin/diceware-eff.sh
790073 4 -rwx------ 1 user user 35 Jun 28 13:01 ./bin/whiptail
790096 4 -rw------- 1 user user 27 Jun 28 13:01 ./etc/shells
790095 4 -rw------- 1 user user 27 Jun 28 13:01 ./etc/passwd
790091 4 -rw------- 1 user user 20 Jun 28 13:01 ./etc/hosts
790090 4 -rw------- 1 user user 10 Jun 28 13:01 ./etc/group
789889 4 -rw------- 1 user user 10 Jun 28 13:01 ./.gnupg/gpg.conf

@snmcmillan
Copy link
Contributor

snmcmillan commented Jul 5, 2019

A few other ideas:

  1. Clean up board-specific files from other devices. (Example is flashrom-kgpe-d16-openbmc.sh is present in X230 builds, x230-flash.init being in main X230 or on Chell Chromebook). This change will likely need to happen during the build process.

  2. Move flash definitions from flash.sh to the board config files. As we support more boards, this will be critical, as all maintained boards are presently defined in flash.sh, and as this project supports more and more boards, flash.sh will get larger and larger. I've started work on this.

These may not be as high priority as other changes, but ones to certainly look at to help reduce firmware size, especially as the project grows.

@tlaurion
Copy link
Collaborator Author

tlaurion commented Jul 6, 2019

@SebastianMcMillan : Those are good cleanup ideas, but unfortunately, will not impact the initrd.cpio.xz (including heads.cpio and tools.cpio), those text files being highly compressed.

The problem lies in binaries, not higly compressed under initrd.cpio.xz

@owlshrimp
Copy link

owlshrimp commented Nov 1, 2019

This article (or the series it comes from) may yield some inspiration:
https://lwn.net/Articles/748198/
Edit: this one is probably more useful https://lwn.net/Articles/741494/

@tlaurion
Copy link
Collaborator Author

tlaurion commented Mar 9, 2020

Solution lies in #307

@tlaurion
Copy link
Collaborator Author

@zaolin pointed out:

Update: Getting rid of libgcrypt and replacement for gpg would be a good way to safe 2MB in total.
See, https://sequoia-pgp.org/ as alternative

@tlaurion tlaurion reopened this Mar 11, 2020
@tlaurion
Copy link
Collaborator Author

tlaurion commented Mar 11, 2020

Update: Getting rid of libgcrypt and replacement for gpg would be a good way to safe 2MB in total.
See, https://sequoia-pgp.org/ as alternative

@zaolin : Unfortunately, there is no smartcard support in sequoia-pgp ATM, on which Heads relies on for verified /boot integrity.

@zaolin
Copy link
Contributor

zaolin commented Mar 12, 2020

@tlaurion ask them for support, they should have basic support for it. They are on IRC #sequoia at Freenode

@tlaurion
Copy link
Collaborator Author

tlaurion commented May 3, 2020

Here we go again, since

To troubleshoot:

make BOARD=x230
cd build/x230
xz -d initrd.cpio.xz ; for i in initrd.cpio modules.cpio tools.cpio heads.cpio; do cpio -i < $i; done && find . -type f -ls | sort -r -n -k7 |grep -v cpio

Output:

    28192   2956 -rw-r--r--   1 user     user      3023312 May  3 12:25 ./bzImage
    61393   1592 -rwx------   1 user     user      1627856 May  3 12:45 ./bin/lvm
    61507   1132 -rwx------   1 user     user      1156424 May  3 12:45 ./lib/libgcrypt.so.20
    61352    892 -rwx------   1 user     user       911264 May  3 12:45 ./bin/gpg
    61504    740 -rwx------   1 user     user       757232 May  3 12:45 ./lib/libcairo.so.2
    61515    652 -rwx------   1 user     user       666216 May  3 12:45 ./lib/libpixman-1.so.0
    61502    584 -rwx------   1 user     user       596544 May  3 12:45 ./lib/libc.so
    61347    556 -rwx------   1 user     user       568264 May  3 12:45 ./bin/flashrom
    61313    472 -rwx------   1 user     user       483160 May  3 12:45 ./bin/busybox
    61424    400 -rwx------   1 user     user       407784 May  3 12:45 ./bin/scdaemon
    61353    368 -rwx------   1 user     user       376024 May  3 12:45 ./bin/gpg-agent
    61519    332 -rwx------   1 user     user       339304 May  3 12:45 ./lib/libtpm.so
    61506    328 -rwx------   1 user     user       333240 May  3 12:45 ./lib/libdevmapper.so.1.02
    61511    320 -rwx------   1 user     user       325104 May  3 12:45 ./lib/libmbedcrypto.so.0
    61524    300 -rw-------   1 user     user       304272 May  3 12:45 ./lib/modules/e1000e.ko
    61510    224 -rwx------   1 user     user       227696 May  3 12:45 ./lib/libksba.so.8
    61516    204 -rwx------   1 user     user       207912 May  3 12:45 ./lib/libpng16.so.16
    61335    184 -rwx------   1 user     user       184824 May  3 12:45 ./bin/dropbear
    61442    176 -rwx------   1 user     user       176408 May  3 12:45 ./bin/ssh
    61369    168 -rwx------   1 user     user       170984 May  3 12:45 ./bin/kexec
    61528    160 -rw-------   1 user     user       159840 May  3 12:45 ./lib/modules/xhci-hcd.ko
    61505    156 -rwx------   1 user     user       159000 May  3 12:45 ./lib/libcryptsetup.so.4
    61334    136 -rwx------   1 user     user       137464 May  3 12:45 ./bin/dmsetup
    61527    132 -rw-------   1 user     user       132360 May  3 12:45 ./lib/modules/usb-storage.ko
    61509    128 -rwx------   1 user     user       130000 May  3 12:45 ./lib/libgpg-error.so.0
    61456    124 -rwx------   1 user     user       126584 May  3 12:45 ./bin/tpm
    61523    108 -rwx------   1 user     user       108832 May  3 12:45 ./lib/libz.so.1
    61521     96 -rwx------   1 user     user        96896 May  3 12:45 ./lib/libusb-1.0.so.0
    61501     76 -rwx------   1 user     user        76736 May  3 12:45 ./lib/libassuan.so.0
    61390     72 -rwx------   1 user     user        73600 May  3 12:45 ./bin/lspci
    61525     64 -rw-------   1 user     user        64800 May  3 12:45 ./lib/modules/ehci-hcd.ko
    61326     64 -rwx------   1 user     user        62328 May  3 12:45 ./bin/cryptsetup-reencrypt
    61325     60 -rwx------   1 user     user        59144 May  3 12:45 ./bin/cryptsetup
    61514     52 -rwx------   1 user     user        52272 May  3 12:45 ./lib/libpci.so.3.5.4
    61513     52 -rwx------   1 user     user        52272 May  3 12:45 ./lib/libpci.so.3
    61411     52 -rwx------   1 user     user        52200 May  3 12:45 ./bin/pinentry-tty
    61343     52 -rwx------   1 user     user        51616 May  3 12:45 ./bin/fbwhiptail
    61517     48 -rwx------   1 user     user        48088 May  3 12:45 ./lib/libpopt.so.0
    61518     48 -rwx------   1 user     user        47448 May  3 12:45 ./lib/libqrencode.so.3
    61473     32 -rwx------   1 user     user        32560 May  3 12:45 ./bin/veritysetup
    61319     28 -rwx------   1 user     user        27048 May  3 12:45 ./bin/cbmem
    61425     24 -rwx------   1 user     user        22664 May  3 12:45 ./bin/scp
    61349     24 -rwx------   1 user     user        22432 May  3 12:45 ./bin/flashtool
    61488     20 -rw-------   1 user     user        19992 May  3 12:45 ./etc/distro/keys/tails.key
    61495     20 -rw-------   1 user     user        18852 May  3 12:45 ./etc/oem/keys/insurgo.key
    61520     20 -rwx------   1 user     user        18464 May  3 12:45 ./lib/libusb-0.1.so.4
    61317     20 -rwx------   1 user     user        18352 May  3 12:45 ./bin/cbfs
    61461     20 -rwx------   1 user     user        18320 May  3 12:45 ./bin/uefi
    61358     16 -rwx------   1 user     user        14657 May  3 12:45 ./bin/gui-init
    61522     16 -rwx------   1 user     user        14656 May  3 12:45 ./lib/libuuid.so.1
    61512     16 -rwx------   1 user     user        14552 May  3 12:45 ./lib/libnpth.so.0
    61414     16 -rwx------   1 user     user        14200 May  3 12:45 ./bin/poke
    61407     12 -rwx------   1 user     user        12056 May  3 12:45 ./bin/oem-factory-reset
    61486     12 -rw-------   1 user     user        10955 May  3 12:45 ./etc/distro/keys/fedora.key
    61526     12 -rw-------   1 user     user        10728 May  3 12:45 ./lib/modules/ehci-pci.ko
    61529     12 -rw-------   1 user     user        10568 May  3 12:45 ./lib/modules/xhci-pci.ko
    61409     12 -rwx------   1 user     user        10096 May  3 12:45 ./bin/peek
    61309     12 -rwx------   1 user     user        10088 May  3 12:45 ./bin/base32
      100     12 -rw-r--r--   1 user     user        10056 May  3 12:39 ./hashes.txt
    61454     12 -rwx------   1 user     user        10048 May  3 12:45 ./bin/totp
    61366     12 -rwx------   1 user     user        10024 May  3 12:45 ./bin/hotp
    61378     12 -rwx------   1 user     user         9894 May  3 12:45 ./bin/kexec-select-boot
    61354     12 -rwx------   1 user     user         9681 May  3 12:45 ./bin/gpg-gui.sh
    61490      8 -rwx------   1 user     user         8173 May  3 12:45 ./etc/functions
    61322      8 -rwx------   1 user     user         5924 May  3 12:45 ./bin/config-gui.sh
    61418      8 -rwx------   1 user     user         5912 May  3 12:45 ./bin/qrenc
    61377      8 -rwx------   1 user     user         4178 May  3 12:45 ./bin/kexec-seal-key
    61345      4 -rwx------   1 user     user         4074 May  3 12:45 ./bin/flash-gui.sh
    61374      4 -rwx------   1 user     user         3654 May  3 12:45 ./bin/kexec-parse-boot
    61375      4 -rwx------   1 user     user         3364 May  3 12:45 ./bin/kexec-save-default
    61498      4 -rwx------   1 user     user         3322 May  3 12:45 ./init
    61370      4 -rwx------   1 user     user         3099 May  3 12:45 ./bin/kexec-boot
    61400      4 -rwx------   1 user     user         3043 May  3 12:45 ./bin/mount-usb
    61426      4 -rwx------   1 user     user         2717 May  3 12:45 ./bin/seal-libremkey
    61371      4 -rwx------   1 user     user         2344 May  3 12:45 ./bin/kexec-insert-key
    61471      4 -rwx------   1 user     user         2130 May  3 12:45 ./bin/usb-scan
    61373      4 -rwx------   1 user     user         2033 May  3 12:45 ./bin/kexec-parse-bls
    61427      4 -rwx------   1 user     user         2027 May  3 12:45 ./bin/seal-totp
    61466      4 -rwx------   1 user     user         1838 May  3 12:45 ./bin/unseal-hotp
    61346      4 -rwx------   1 user     user         1724 May  3 12:45 ./bin/flash.sh
    61376      4 -rwx------   1 user     user         1677 May  3 12:45 ./bin/kexec-save-key
    61487      4 -rw-------   1 user     user         1629 May  3 12:45 ./etc/distro/keys/qubes-4.key
    61379      4 -rwx------   1 user     user         1407 May  3 12:45 ./bin/kexec-sign-config
    61372      4 -rwx------   1 user     user         1375 May  3 12:45 ./bin/kexec-iso-init
    61530      4 -rwx------   1 user     user         1373 May  3 12:45 ./mount-boot
    61350      4 -rwx------   1 user     user         1299 May  3 12:45 ./bin/generic-init
    60093      4 -rw-------   1 user     user         1247 May  3 12:45 ./.ash_history
    61380      4 -rwx------   1 user     user         1044 May  3 12:45 ./bin/kexec-unseal-key
    61546      4 -rwx------   1 user     user         1000 May  3 12:45 ./sbin/insmod
    61535      4 -rwx------   1 user     user          922 May  3 12:45 ./sbin/config-dhcp.sh
    61318      4 -rwx------   1 user     user          799 May  3 12:45 ./bin/cbfs-init
    61381      4 -rwx------   1 user     user          770 May  3 12:45 ./bin/key-init
    61485      4 -rw-------   1 user     user          700 May  3 12:45 ./etc/config
    61457      4 -rwx------   1 user     user          694 May  3 12:45 ./bin/tpm-reset
    61403      4 -rwx------   1 user     user          675 May  3 12:45 ./bin/network-init-recovery
    61462      4 -rwx------   1 user     user          661 May  3 12:45 ./bin/uefi-init
    61467      4 -rwx------   1 user     user          634 May  3 12:45 ./bin/unseal-totp
    61479      4 -rwx------   1 user     user          574 May  3 12:45 ./bin/x230-flash.init
    61419      4 -rwx------   1 user     user          366 May  3 12:45 ./bin/qubes-measure-luks
    61348      4 -rwx------   1 user     user          360 May  3 12:45 ./bin/flashrom-kgpe-d16-openbmc.sh
    61477      4 -rwx------   1 user     user          320 May  3 12:45 ./bin/wget-measure.sh
    61420      4 -rwx------   1 user     user          258 May  3 12:45 ./bin/reboot
    61470      4 -rwx------   1 user     user          220 May  3 12:45 ./bin/usb-init
    61415      4 -rwx------   1 user     user          205 May  3 12:45 ./bin/poweroff
    61489      4 -rw-------   1 user     user          197 May  3 12:45 ./etc/fstab
    61493      4 -rw-------   1 user     user          174 May  3 12:45 ./etc/motd
    61355      4 -rwx------   1 user     user          106 May  3 12:45 ./bin/gpgv
    60437      4 -rw-------   1 user     user           73 May  3 12:45 ./.gnupg/gpg-agent.conf
    61478      4 -rwx------   1 user     user           35 May  3 12:45 ./bin/whiptail
    61497      4 -rw-------   1 user     user           27 May  3 12:45 ./etc/shells
    61496      4 -rw-------   1 user     user           27 May  3 12:45 ./etc/passwd
    61492      4 -rw-------   1 user     user           20 May  3 12:45 ./etc/hosts
    61491      4 -rw-------   1 user     user           10 May  3 12:45 ./etc/group
    61303      4 -rw-------   1 user     user           10 May  3 12:45 ./.gnupg/gpg.conf




tlaurion added a commit to tlaurion/heads that referenced this issue May 3, 2020
…gawk error fixed upstream). Goal of this is to show that x230 board will die if we do not resolve linuxboot#590, or move along with linuxboot#703.
@tlaurion
Copy link
Collaborator Author

tlaurion commented May 3, 2020

A public build showing that not moving along with this actual ticket or with #703 is breaking x230 support and 12Mb boards altogether, Heads having become too big.

@flammit: This build will fail at coreboot integration of cpios (CBFS region not being big enough), but artifacts will include initird.cpio.xz, heads.cpio, tools.cpio and modules.cpio for others to see the limit and dead end we are now facing.

Now what?

@MrChromebox
Copy link
Contributor

@tlaurion is reducing the kernel size not an option, or simply too much effort?

@tlaurion
Copy link
Collaborator Author

tlaurion commented May 3, 2020

@MrChromebox : my reluctance in attacking Kernel size reduction comes with the conclusions of #453 where some 300k were obtained. Of course, those recommendations should be investigated.

Will reread myself.
I have tagged you in #517 to resume there if you can reduce FBWhiptail general footprint, which are the next in line (when combined) after kernel, while lvm and gpg would also to be addressed.

I'll revisit gpg2 myself, in the goal of fixing #668 for #710

@tlaurion
Copy link
Collaborator Author

tlaurion commented May 25, 2020

@MrChromebox #668 and #710 being resolved, I've been looking at multiple source on kernel debloating to do some state of the art.

It seems that be most interesting articles are...

Runtime collection based optimizations:

LTO:

Reading.

@tlaurion
Copy link
Collaborator Author

tlaurion commented May 26, 2020

Playing around with information found under this "Shrinking the kernel with an AXE" blog post to reduce kernel size prior of going the LTO way.

git diff osresearch/master> patch
cat patch 
diff --git a/config/linux-x230.config b/config/linux-x230.config
index dd5af0c..6cb7ea8 100644
--- a/config/linux-x230.config
+++ b/config/linux-x230.config
@@ -14,6 +14,7 @@ CONFIG_INITRAMFS_SOURCE="../../../blobs/dev.cpio"
 # CONFIG_RD_LZO is not set
 # CONFIG_RD_LZ4 is not set
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_MULTIUSER is not set
 # CONFIG_SGETMASK_SYSCALL is not set
 # CONFIG_SYSFS_SYSCALL is not set
 # CONFIG_BASE_FULL is not set
@@ -25,18 +26,18 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_MEMBARRIER is not set
 CONFIG_EMBEDDED=y
 # CONFIG_VM_EVENT_COUNTERS is not set
-# CONFIG_SLUB_DEBUG is not set
 # CONFIG_COMPAT_BRK is not set
+CONFIG_SLOB=y
 CONFIG_JUMP_LABEL=y
 CONFIG_CC_STACKPROTECTOR_STRONG=y
 CONFIG_MODULES=y
+CONFIG_TRIM_UNUSED_KSYMS=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
 CONFIG_SMP=y
 # CONFIG_X86_EXTENDED_PLATFORM is not set
 CONFIG_PROCESSOR_SELECT=y
 # CONFIG_CPU_SUP_CENTAUR is not set
-CONFIG_PREEMPT_VOLUNTARY=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
 # CONFIG_X86_MCE_AMD is not set
 # CONFIG_PERF_EVENTS_INTEL_RAPL is not set
@@ -56,7 +57,6 @@ CONFIG_KEXEC_FILE=y
 CONFIG_PHYSICAL_ALIGN=0x1000000
 # CONFIG_MODIFY_LDT_SYSCALL is not set
 # CONFIG_SUSPEND is not set
-CONFIG_ACPI_VIDEO=y
 CONFIG_PCI_MSI=y
 # CONFIG_HT_IRQ is not set
 CONFIG_PCI_IOV=y
@@ -184,9 +184,7 @@ CONFIG_MFD_SYSCON=y
 CONFIG_DRM=y
 CONFIG_DRM_I915=y
 CONFIG_FB_VESA=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
 # CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_GENERIC is not set
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_USB=y
@@ -207,9 +205,7 @@ CONFIG_GENERIC_PHY=y
 # CONFIG_DMIID is not set
 CONFIG_GOOGLE_FIRMWARE=y
 CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY=y
-# CONFIG_EXT2_FS is not set
 CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT2=y
 # CONFIG_DNOTIFY is not set
 # CONFIG_INOTIFY_USER is not set
 CONFIG_ISO9660_FS=y
@@ -218,7 +214,6 @@ CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y
 # CONFIG_PROC_SYSCTL is not set
 # CONFIG_PROC_PAGE_MONITOR is not set
-CONFIG_TMPFS=y
 # CONFIG_MISC_FILESYSTEMS is not set
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=y
@@ -238,13 +233,11 @@ CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_RCU_TRACE is not set
 # CONFIG_FTRACE is not set
-# CONFIG_STRICT_DEVMEM is not set
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 # CONFIG_DOUBLEFAULT is not set
 CONFIG_IO_DELAY_0XED=y
 CONFIG_OPTIMIZE_INLINING=y
 # CONFIG_X86_DEBUG_FPU is not set
-CONFIG_HARDENED_USERCOPY=y
 CONFIG_CRYPTO_RSA=m
 CONFIG_CRYPTO_USER=y
 CONFIG_CRYPTO_MCRYPTD=m

Raw results
Before:
28192 2956 -rw-r--r-- 1 user user 3023312 May 3 12:25 ./bzImage
Now:
31097 2876 -rw-r--r-- 1 user user 2941392 May 26 10:46 ./bzImage
Gain: 81.92Kb without LTO following this blog post.

Edit:
Meanwhile, trying to upgrade the kernel breaks x230-flash board support because not enough space is available under CBFS on the 4MB flash chip alone.

tlaurion added a commit to tlaurion/heads that referenced this issue Aug 31, 2022
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Limitations:
- busybox don't seem to take Os into consideration when applied, no change to module yet.
- kexec applies both O2 and Os, no change to module yet.
- Kernel is already optimized for size (CONFIG_CC_OPTIMIZE_FOR_SIZE as Kconfig option), and kernel modules stripped prior of inserted in initrd, compressed with xz. Nothing else can be done here unless lto

Next steps:
- Go LTO for kernel and modules? But, I was not successful going that way in the past, maybe musl-cross-make has changed.
- Not sure if I read correctly, but -Oz may have happened under GCC 12.1, but not sure if apple relative or FSS GCC. Opened an issue over musl-cross-make, but the project is conservative on used GCC version.

Attempt to contribute to linuxboot#590 by reducing payload's footprint
tlaurion added a commit to tlaurion/heads that referenced this issue Sep 26, 2022
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Limitations:
- busybox don't seem to take Os into consideration when applied, no change to module yet.
- kexec applies both O2 and Os, no change to module yet.
- Kernel is already optimized for size (CONFIG_CC_OPTIMIZE_FOR_SIZE as Kconfig option), and kernel modules stripped prior of inserted in initrd, compressed with xz. Nothing else can be done here unless lto

Next steps:
- Go LTO for kernel and modules? But, I was not successful going that way in the past, maybe musl-cross-make has changed.
- Not sure if I read correctly, but -Oz may have happened under GCC 12.1, but not sure if apple relative or FSS GCC. Opened an issue over musl-cross-make, but the project is conservative on used GCC version.

Attempt to contribute to linuxboot#590 by reducing payload's footprint
tlaurion added a commit to tlaurion/heads that referenced this issue Feb 18, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Limitations:
- busybox don't seem to take Os into consideration when applied, no change to module yet.
- kexec applies both O2 and Os, no change to module yet.
- Kernel is already optimized for size (CONFIG_CC_OPTIMIZE_FOR_SIZE as Kconfig option), and kernel modules stripped prior of inserted in initrd, compressed with xz. Nothing else can be done here unless lto

Next steps:
- Go LTO for kernel and modules? But, I was not successful going that way in the past, maybe musl-cross-make has changed.
- Not sure if I read correctly, but -Oz may have happened under GCC 12.1, but not sure if apple relative or FSS GCC. Opened an issue over musl-cross-make, but the project is conservative on used GCC version.

Attempt to contribute to linuxboot#590 by reducing payload's footprint
tlaurion added a commit to tlaurion/heads that referenced this issue Feb 21, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Limitations:
- busybox don't seem to take Os into consideration when applied, no change to module yet.
- kexec applies both O2 and Os, no change to module yet.
- Kernel is already optimized for size (CONFIG_CC_OPTIMIZE_FOR_SIZE as Kconfig option), and kernel modules stripped prior of inserted in initrd, compressed with xz. Nothing else can be done here unless lto

Next steps:
- Go LTO for kernel and modules? But, I was not successful going that way in the past, maybe musl-cross-make has changed.
- Not sure if I read correctly, but -Oz may have happened under GCC 12.1, but not sure if apple relative or FSS GCC. Opened an issue over musl-cross-make, but the project is conservative on used GCC version.

Attempt to contribute to linuxboot#590 by reducing payload's footprint
tlaurion added a commit to tlaurion/heads that referenced this issue Feb 22, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Limitations:
- busybox don't seem to take Os into consideration when applied, no change to module yet.
- kexec applies both O2 and Os, no change to module yet.
- Kernel is already optimized for size (CONFIG_CC_OPTIMIZE_FOR_SIZE as Kconfig option), and kernel modules stripped prior of inserted in initrd, compressed with xz. Nothing else can be done here unless lto

Next steps:
- Go LTO for kernel and modules? But, I was not successful going that way in the past, maybe musl-cross-make has changed.
- Not sure if I read correctly, but -Oz may have happened under GCC 12.1, but not sure if apple relative or FSS GCC. Opened an issue over musl-cross-make, but the project is conservative on used GCC version.

Attempt to contribute to linuxboot#590 by reducing payload's footprint
tlaurion added a commit to tlaurion/heads that referenced this issue Feb 22, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Limitations:
- busybox don't seem to take Os into consideration when applied, no change to module yet.
- kexec applies both O2 and Os, no change to module yet.
- Kernel is already optimized for size (CONFIG_CC_OPTIMIZE_FOR_SIZE as Kconfig option), and kernel modules stripped prior of inserted in initrd, compressed with xz. Nothing else can be done here unless lto

Next steps:
- Go LTO for kernel and modules? But, I was not successful going that way in the past, maybe musl-cross-make has changed.
- Not sure if I read correctly, but -Oz may have happened under GCC 12.1, but not sure if apple relative or FSS GCC. Opened an issue over musl-cross-make, but the project is conservative on used GCC version.

Attempt to contribute to linuxboot#590 by reducing payload's footprint
tlaurion added a commit to tlaurion/heads that referenced this issue Mar 1, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

- Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call
- Includes linuxboot#1251 (should be rebased on top of it merged)
tlaurion added a commit to tlaurion/heads that referenced this issue Mar 7, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

- Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call
tlaurion added a commit to tlaurion/heads that referenced this issue Mar 7, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

- Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call
tlaurion added a commit to tlaurion/heads that referenced this issue Mar 7, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

- Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Doesn't work for:
- busybox (HOSTCXXFLAGS="-Os" attempted prior of ./configure call)
- zlib (CFLAGS="-Os" attempted prior of ./configure call)
- npth (CFLAGS="-Os" attempted prior of ./configure call)
tlaurion added a commit to tlaurion/heads that referenced this issue Mar 7, 2023
Adresses @easrentai suggestion to pass modules build optimization for space here: linuxboot#590 (comment)

- Uniformized module's $(CROSS_TOOLS) being passed as environment variable, prior of ./configure call

Doesn't work for:
- busybox (HOSTCXXFLAGS="-Os" attempted prior of ./configure call)
- zlib (CFLAGS="-Os" attempted prior of ./configure call)
- npth (CFLAGS="-Os" attempted prior of ./configure call)
@druimalban
Copy link
Contributor

Some of these comments are fairly general but I think pertinent to the above discussion.

I believe that on platforms with libgfxinit, you can reuse the framebuffer set up by Coreboot, then all you need is the kernel's simplefb and the Google Coreboot framebuffer firmware driver. This no longer requires a patch, it's upstream. This may or may not be an improvement over the current state, but if Linux is doing any graphics initialisation whatsoever currently, there may be a space saving.

The only non-Intel example I can see which you support is the old and quirky KGPE-D16, no longer supported upstream. The suspiciously upbeat Libreboot documentation claims that native graphics initialisation works in text mode, but I've never seen any evidence of this working without a video BIOS on that board.

Nonetheless I suggest that this is fiddling around the edges, the kernel is already pretty small. GPG seems to be the biggest component, and it is difficult to use. I'd personally include a couple of manpages and busybox man!

@tlaurion
Copy link
Collaborator Author

tlaurion commented May 20, 2023

@druimalban you are right on point with my current experiments with libgfxinit for GMA (Intel only supported in libgfxinit code for native graphic init) and my current status is that its "working" correctly with "simple" hack added into kexec patch for simplefb fb base address to be passed through kexec call. I have a lot of ongoing branches
to test libgfxinit bootsplash and native init, so that older xx30/xx20 platforms shows something (1024x768 framebuffer initialized by libgfxinit and bootplash showing after couple millisecond) up until simplefb drives the framebuffer (still in 1024x768). One of these branches, messy, is https://github.com/tlaurion/heads/tree/libgfxinit-or-native-gfx-init_simplefb_heads_splashscreen_local_tests_with_nix_and_others_linux-6.1.28

Problem there, still with simplefb, is that fbwhiptail won't work writing in single buffer and needs work under fbwhiptail. Whiptail (console based menus) works. And then kexec'ing into even tinycore14 for x86_64 works (only provides vesa and the console aquires the passed fb just fine).

Situation is different for qemu q35 coreboot board. Bochs driver in coreboot initializes correctly, shows splashscreen (qemu -vga std) And then bochs DRM takes over the fb correctly. This requires the next kernel to provide bochs DRM as well for next kernel to take over console correctly.

On qemu with bochs providing native init in coreboot, qemu -vga std, and simplefb driving the framebuffer, I'm currently stuck with the fb under qemu not refreshing unless I zoom in zoom out qemu window. This kexec's correctly into next kernel from vesa mode (tinycore14 iso boots fine) to bochs DRM if provided(Debian fedora etc) but still qemu doesn't refresh the window. Something is wrong there and needs proper troubleshooting to open bug report in either kernel/qemu. I will have to retest --32bit entry point in kexec call as linuxboot folks points out again, but haven't been successful fixing this in past tests but I might kiss something.

When DRM drivers are removed from x230 kernel, namely i915 fb and DRM, there is a gain of 500kb of compressed firmware space freed under coreboot stitched rom for x230-maximized board in my tests.

Kernel 5.14+ moved DRM into tiny DRM, and ecosystem is moving forward to remove fb support and replace it with kms DRM drivers compiled in kernel, and seems to be the way forward. Heads could he generalized in using simplefb with native init under coreboot, which most boards supports either through native gfx init or libgfxinit.

Current situation with i915drm still works with hacks of kexec so that newer i915drm is passed as VLFB to next kernel call saying to kernel to leak the fb address. And libgfxinit enabled for all Intel based gfx and i915drm taking ownership of fb, the user at least gets a splashscreen where he waits for spi to read the payload and execute it (8-10 seconds). This seems to be the first step to bump to 5.10+ and leave 4.14 behind and have interesting new features, like extfat, android tethering, mmc reader support and other fancy things being possible to use. Also a lot of kernel options were reviewed and considered unnecessary in branch tested, including crypto back end requirements in kernel and performance gains from scheduler choices and selecting proper CPU and CPU extensions and optimizations there, also reducing kernel size. Other experiments would need to be conducted with having drivers compiled as modules, since those modules are stripped prior of being added to modules.cpio and compressed there. We could load them directly from init, specifying them in board config, which could also play a role at knowing which drivers would be needed and pave the requirements to be able to determine in advance PCR measurements to precalculate PCRs to strengthen auditing and even provide expected TCPA log, and also provide inception and external validation of a firmware backup/downloaded ROM, extending what hashes.txt can do today.

Addibg back libgfxinit and bootsplash whike still deprdning in i915drm will probably be the next step, and then moving away of DRM drivers packed in kernel for heads and be replaced by simplefb with fbwhiptail fixed to be able to play with it nicely.

But in the meantime, bumping kernel to at least 5.10 serie is needed for all boards and ideal would be to share the same kernel version so that builds also happen faster for all boards, and for kernel configurations to be properly optimized with more eyes understanding what is happening there in the goal of having only needed options, and board deriving for what is special about them.

Thanks for you input. If you are interested into helping into this let me know! Are you under Matrix? See community page and ping me there, you seem to know a thing or two about what could be going wrong!

@tlaurion
Copy link
Collaborator Author

tlaurion commented May 20, 2023

The only non-Intel example I can see which you support is the old and quirky KGPE-D16

There is dasharo kgpe-d16 coreboot fork.
Ast driver was good enough last time I tested but unfortunately my CPU/ram is bad and I cannot test. Native gfx init would need to be tested there too with simplefb, but yet again, workstation variants (as oppised to server variant) there relies on and/nvidia kernel drivers for which spi space constraints are not really an issue (16mb is plenty there, and 3mdeb sells the connector/spi with wp jumper which is nice).

@druimalban
Copy link
Contributor

The only non-Intel example I can see which you support is the old and quirky KGPE-D16

There is dasharo kgpe-d16 coreboot fork. Ast driver was good enough last time I tested but unfortunately my CPU/ram is bad and I cannot test. Native gfx init would need to be tested there too with simplefb, but yet again, workstation variants (as oppised to server variant) there relies on and/nvidia kernel drivers for which spi space constraints are not really an issue (16mb is plenty there, and 3mdeb sells the connector/spi with wp jumper which is nice).

The Dasharo port of recent Coreboot to the board suffers from faulty automatic fan control, where fans go to full speed and PWM statistics about them become unavailable. The bug occurs approximately 1/3 of the time for me. There is no apparent way to turn it off and it's not clear how it interacts with (working) fan control via openBMC. The last stable Coreboot for the board is 4.11, which is effectively four years old, and has numerous quirks which shan't be fixed, and it isn't fair to bother Coreboot developers about bugs in such an old code-base.

I have suspicions that if using the 3mdeb jumper, ground will be shorted to VCC, assuming that the board's WP pin is pulled to VCC. I do not know of any schematics, so this assumption could be wrong, and the adaptor may be safe to use. Thus I built my own adaptor which breaks out the pins albeit with WP not extending down to the board.

@tlaurion
Copy link
Collaborator Author

tlaurion commented Jun 22, 2023

The only non-Intel example I can see which you support is the old and quirky KGPE-D16

There is dasharo kgpe-d16 coreboot fork. Ast driver was good enough last time I tested but unfortunately my CPU/ram is bad and I cannot test. Native gfx init would need to be tested there too with simplefb, but yet again, workstation variants (as oppised to server variant) there relies on and/nvidia kernel drivers for which spi space constraints are not really an issue (16mb is plenty there, and 3mdeb sells the connector/spi with wp jumper which is nice).

The Dasharo port of recent Coreboot to the board suffers from faulty automatic fan control, where fans go to full speed and PWM statistics about them become unavailable. The bug occurs approximately 1/3 of the time for me. There is no apparent way to turn it off and it's not clear how it interacts with (working) fan control via openBMC. The last stable Coreboot for the board is 4.11, which is effectively four years old, and has numerous quirks which shan't be fixed, and it isn't fair to bother Coreboot developers about bugs in such an old code-base.

I have suspicions that if using the 3mdeb jumper, ground will be shorted to VCC, assuming that the board's WP pin is pulled to VCC. I do not know of any schematics, so this assumption could be wrong, and the adaptor may be safe to use. Thus I built my own adaptor which breaks out the pins albeit with WP not extending down to the board.

@druimalban : WP is supposed to be pulled to GND per https://docs.dasharo.com/variants/asus_kgpe_d16/spi-wp/ which is what is implemented with jumper and sold at https://shop.3mdeb.com/shop/adapters/flash-chip-adapters/asus-kgpe-d16-flash-chip-adapter/

I would advise into creating a separate issue to track issues you have with kgpe-d16 on dasharo github issues https://github.com/Dasharo/dasharo-issues/issues. I had forgotten about your post here until I needed to come back to the issue at stake and read your post a while ago but since it was irrelevant to issue at stake here, I didn't reply immediately and then it got forgotten.

@tlaurion
Copy link
Collaborator Author

Playing around with #1381 getting it to merge, I came up with another oneliner really useful to get to really know the size of everything being packed into the kernel.

Some small notes: Heads builds linux/coreboot in subdirs corresponding to directory name of the linux config file of a board, not in the linux extracted dir. This is the right way, since everything for an arch being compiled as artifacts with musl-cross-make can then be reused in CircleCI to make other boards reuse compiled artifacts without the need fo make distclean or any other cleaning which would require to recompiled everything, not just what differs from one board config to the other through linux config files.

I decided to take a look at current local state of tweaks and built the really now limited t520-maximized board:
make BOARD=t520-maximized
except of coreboot output at the end

# Use coreboot.rom, because custom output files might not be processed by cbfstool
"/home/user/heads/build/x86/coreboot-4.19/t520-maximized/cbfstool" "/home/user/heads/build/x86/coreboot-4.19/t520-maximized/coreboot.rom" print
FMAP REGION: COREBOOT
Name                           Offset     Type           Size   Comp
cbfs_master_header             0x0        cbfs header        32 none
fallback/romstage              0x80       stage           74024 none
cpu_microcode_blob.bin         0x12240    microcode       26624 none
fallback/ramstage              0x18a80    stage          119765 LZMA (258412 decompressed)
build_info                     0x35ec0    raw               101 none
bootsplash.jpg                 0x35f80    bootsplash      36352 none
fallback/dsdt.aml              0x3edc0    raw             14522 none
vbt.bin                        0x426c0    raw              1389 LZMA (3985 decompressed)
cmos_layout.bin                0x42c80    cmos_layout      2108 none
fallback/postcar               0x43500    stage           22200 none
fallback/payload               0x48c00    simple elf    6997108 none
(empty)                        0x6f50c0   null           879140 none
bootblock                      0x7cbb00   bootblock       17088 none
2023-06-22 12:26:28-04:00 INSTALL   build/x86/coreboot-4.19/t520-maximized/coreboot.rom => build/x86/t520-maximized/heads-t520-maximized-v0.2.0-1590-ge92624e.rom

Yes... 879140 on the empty CBFS space means we have 0.8mb left of SPI space. Not so bad still when we consider that that board has 8mb SPI.

Current experiments tweaking linux-x230-maximized.config used to build kernel 5.10.5, exerpt:

user@heads-tests-deb12:~/heads/build/x86/linux-5.10.5/linux-x230-maximized$ files=$(find ./ -name built-in.a); size -t $files | sed "s|(TOTALS)|$file|"| sort -nr
19713205	3006613	1105588	23825406	16b8bfe	
 164349	   1338	      0	 165687	  28737	./drivers/gpu/drm/i915/display/intel_display.o (ex ./drivers/gpu/drm/i915/built-in.a)
 164349	   1338	      0	 165687	  28737	./drivers/gpu/drm/i915/display/intel_display.o (ex ./drivers/gpu/drm/built-in.a)
 164349	   1338	      0	 165687	  28737	./drivers/gpu/drm/i915/display/intel_display.o (ex ./drivers/gpu/built-in.a)
 164349	   1338	      0	 165687	  28737	./drivers/gpu/drm/i915/display/intel_display.o (ex ./drivers/built-in.a)
  67591	      0	      0	  67591	  10807	./fs/unicode/utf8-norm.o (ex ./fs/unicode/built-in.a)
  67591	      0	      0	  67591	  10807	./fs/unicode/utf8-norm.o (ex ./fs/built-in.a)
  66834	   4484	    372	  71690	  1180a	./net/core/dev.o (ex ./net/core/built-in.a)
  66834	   4484	    372	  71690	  1180a	./net/core/dev.o (ex ./net/built-in.a)
  66246	    699	     76	  67021	  105cd	./net/core/filter.o (ex ./net/core/built-in.a)
  66246	    699	     76	  67021	  105cd	./net/core/filter.o (ex ./net/built-in.a)
  65530	    545	      0	  66075	  1021b	./drivers/gpu/drm/i915/display/intel_dp.o (ex ./drivers/gpu/drm/i915/built-in.a)
  65530	    545	      0	  66075	  1021b	./drivers/gpu/drm/i915/display/intel_dp.o (ex ./drivers/gpu/drm/built-in.a)
  65530	    545	      0	  66075	  1021b	./drivers/gpu/drm/i915/display/intel_dp.o (ex ./drivers/gpu/built-in.a)
  65530	    545	      0	  66075	  1021b	./drivers/gpu/drm/i915/display/intel_dp.o (ex ./drivers/built-in.a)
  63980	   3166	    956	  68102	  10a06	./kernel/events/core.o (ex ./kernel/events/built-in.a)
  63980	   3166	    956	  68102	  10a06	./kernel/events/core.o (ex ./kernel/built-in.a)
  58165	    812	    591	  59568	   e8b0	./drivers/input/serio/i8042.o (ex ./drivers/input/serio/built-in.a)
  58165	    812	    591	  59568	   e8b0	./drivers/input/serio/i8042.o (ex ./drivers/built-in.a)
  57285	     20	      0	  57305	   dfd9	./drivers/gpu/drm/drm_edid.o (ex ./drivers/gpu/drm/built-in.a)
  57285	     20	      0	  57305	   dfd9	./drivers/gpu/drm/drm_edid.o (ex ./drivers/gpu/built-in.a)
  57285	     20	      0	  57305	   dfd9	./drivers/gpu/drm/drm_edid.o (ex ./drivers/built-in.a)
  56002	    305	      0	  56307	   dbf3	./drivers/gpu/drm/i915/intel_pm.o (ex ./drivers/gpu/drm/i915/built-in.a)
  56002	    305	      0	  56307	   dbf3	./drivers/gpu/drm/i915/intel_pm.o (ex ./drivers/gpu/drm/built-in.a)
  56002	    305	      0	  56307	   dbf3	./drivers/gpu/drm/i915/intel_pm.o (ex ./drivers/gpu/built-in.a)
  56002	    305	      0	  56307	   dbf3	./drivers/gpu/drm/i915/intel_pm.o (ex ./drivers/built-in.a)
  48584	    409	   1032	  50025	   c369	./fs/ext4/super.o (ex ./fs/ext4/built-in.a)
  48584	    409	   1032	  50025	   c369	./fs/ext4/super.o (ex ./fs/built-in.a)
  42135	   2756	     48	  44939	   af8b	./drivers/ata/libata-core.o (ex ./drivers/built-in.a)
  42135	   2756	     48	  44939	   af8b	./drivers/ata/libata-core.o (ex ./drivers/ata/built-in.a)
  41490	    409	      0	  41899	   a3ab	./drivers/gpu/drm/i915/display/intel_ddi.o (ex ./drivers/gpu/drm/i915/built-in.a)
  41490	    409	      0	  41899	   a3ab	./drivers/gpu/drm/i915/display/intel_ddi.o (ex ./drivers/gpu/drm/built-in.a)
  41490	    409	      0	  41899	   a3ab	./drivers/gpu/drm/i915/display/intel_ddi.o (ex ./drivers/gpu/built-in.a)
  41490	    409	      0	  41899	   a3ab	./drivers/gpu/drm/i915/display/intel_ddi.o (ex ./drivers/built-in.a)
  41122	    323	   1048	  42493	   a5fd	./net/core/rtnetlink.o (ex ./net/core/built-in.a)
  41122	    323	   1048	  42493	   a5fd	./net/core/rtnetlink.o (ex ./net/built-in.a)
  41058	   4841	     13	  45912	   b358	./drivers/pci/quirks.o (ex ./drivers/pci/built-in.a)
  41058	   4841	     13	  45912	   b358	./drivers/pci/quirks.o (ex ./drivers/built-in.a)
  40977	   1463	   1976	  44416	   ad80	./drivers/iommu/intel/iommu.o (ex ./drivers/iommu/intel/built-in.a)
  40977	   1463	   1976	  44416	   ad80	./drivers/iommu/intel/iommu.o (ex ./drivers/iommu/built-in.a)
  40977	   1463	   1976	  44416	   ad80	./drivers/iommu/intel/iommu.o (ex ./drivers/built-in.a)
  40716	  10574	     52	  51342	   c88e	./drivers/scsi/scsi_transport_iscsi.o (ex ./drivers/scsi/built-in.a)
  40716	  10574	     52	  51342	   c88e	./drivers/scsi/scsi_transport_iscsi.o (ex ./drivers/built-in.a)
  40504	     72	      0	  40576	   9e80	./drivers/gpu/drm/drm_dp_mst_topology.o (ex ./drivers/gpu/drm/built-in.a)
  40504	     72	      0	  40576	   9e80	./drivers/gpu/drm/drm_dp_mst_topology.o (ex ./drivers/gpu/built-in.a)
  40504	     72	      0	  40576	   9e80	./drivers/gpu/drm/drm_dp_mst_topology.o (ex ./drivers/built-in.a)
  40353	    464	      0	  40817	   9f71	./fs/ext4/inode.o (ex ./fs/ext4/built-in.a)
  40353	    464	      0	  40817	   9f71	./fs/ext4/inode.o (ex ./fs/built-in.a)
  40064	   1058	      0	  41122	   a0a2	./net/core/skbuff.o (ex ./net/core/built-in.a)
  40064	   1058	      0	  41122	   a0a2	./net/core/skbuff.o (ex ./net/built-in.a)
  39971	    499	      0	  40470	   9e16	./drivers/gpu/drm/i915/display/intel_display_power.o (ex ./drivers/gpu/drm/i915/built-in.a)
  39971	    499	      0	  40470	   9e16	./drivers/gpu/drm/i915/display/intel_display_power.o (ex ./drivers/gpu/drm/built-in.a)
  39971	    499	      0	  40470	   9e16	./drivers/gpu/drm/i915/display/intel_display_power.o (ex ./drivers/gpu/built-in.a)
  39971	    499	      0	  40470	   9e16	./drivers/gpu/drm/i915/display/intel_display_power.o (ex ./drivers/built-in.a)
  36382	    808	     88	  37278	   919e	./fs/ext4/mballoc.o (ex ./fs/ext4/built-in.a)
  36382	    808	     88	  37278	   919e	./fs/ext4/mballoc.o (ex ./fs/built-in.a)
  36264	    248	      0	  36512	   8ea0	./fs/ext4/extents.o (ex ./fs/ext4/built-in.a)
  36264	    248	      0	  36512	   8ea0	./fs/ext4/extents.o (ex ./fs/built-in.a)
  36192	    756	     64	  37012	   9094	./drivers/pci/pci.o (ex ./drivers/pci/built-in.a)
  36192	    756	     64	  37012	   9094	./drivers/pci/pci.o (ex ./drivers/built-in.a)
  35293	    296	      8	  35597	   8b0d	./net/ipv4/tcp_input.o (ex ./net/ipv4/built-in.a)
  35293	    296	      8	  35597	   8b0d	./net/ipv4/tcp_input.o (ex ./net/built-in.a)
  35075	    360	      0	  35435	   8a6b	./drivers/gpu/drm/i915/display/intel_dpll_mgr.o (ex ./drivers/gpu/drm/i915/built-in.a)
  35075	    360	      0	  35435	   8a6b	./drivers/gpu/drm/i915/display/intel_dpll_mgr.o (ex ./drivers/gpu/drm/built-in.a)
  35075	    360	      0	  35435	   8a6b	./drivers/gpu/drm/i915/display/intel_dpll_mgr.o (ex ./drivers/gpu/built-in.a)
  35075	    360	      0	  35435	   8a6b	./drivers/gpu/drm/i915/display/intel_dpll_mgr.o (ex ./drivers/built-in.a)
  33798	   1160	     80	  35038	   88de	./drivers/md/dm-thin.o (ex ./drivers/md/built-in.a)
  33798	   1160	     80	  35038	   88de	./drivers/md/dm-thin.o (ex ./drivers/built-in.a)
  32238	    239	      0	  32477	   7edd	./drivers/gpu/drm/i915/i915_irq.o (ex ./drivers/gpu/drm/i915/built-in.a)
  32238	    239	      0	  32477	   7edd	./drivers/gpu/drm/i915/i915_irq.o (ex ./drivers/gpu/drm/built-in.a)
  32238	    239	      0	  32477	   7edd	./drivers/gpu/drm/i915/i915_irq.o (ex ./drivers/gpu/built-in.a)
  32238	    239	      0	  32477	   7edd	./drivers/gpu/drm/i915/i915_irq.o (ex ./drivers/built-in.a)
  31805	   4780	     62	  36647	   8f27	./kernel/rcu/tree.o (ex ./kernel/rcu/built-in.a)
  31805	   4780	     62	  36647	   8f27	./kernel/rcu/tree.o (ex ./kernel/built-in.a)
  31648	    945	     64	  32657	   7f91	./mm/page_alloc.o (ex ./mm/built-in.a)
  31558	    741	   3968	  36267	   8dab	./drivers/tty/vt/vt.o (ex ./drivers/tty/vt/built-in.a)
  31558	    741	   3968	  36267	   8dab	./drivers/tty/vt/vt.o (ex ./drivers/tty/built-in.a)
  31558	    741	   3968	  36267	   8dab	./drivers/tty/vt/vt.o (ex ./drivers/built-in.a)
  31485	     80	      0	  31565	   7b4d	./fs/ext4/namei.o (ex ./fs/ext4/built-in.a)
  31485	     80	      0	  31565	   7b4d	./fs/ext4/namei.o (ex ./fs/built-in.a)
  29496	    104	      0	  29600	   73a0	./drivers/gpu/drm/i915/display/intel_sdvo.o (ex ./drivers/gpu/drm/i915/built-in.a)
  29496	    104	      0	  29600	   73a0	./drivers/gpu/drm/i915/display/intel_sdvo.o (ex ./drivers/gpu/drm/built-in.a)
  29496	    104	      0	  29600	   73a0	./drivers/gpu/drm/i915/display/intel_sdvo.o (ex ./drivers/gpu/built-in.a)
  29496	    104	      0	  29600	   73a0	./drivers/gpu/drm/i915/display/intel_sdvo.o (ex ./drivers/built-in.a)
  29040	  12768	     46	  41854	   a37e	./arch/x86/events/intel/core.o (ex ./arch/x86/events/intel/built-in.a)
  29040	  12768	     46	  41854	   a37e	./arch/x86/events/intel/core.o (ex ./arch/x86/events/built-in.a)
  29040	  12768	     46	  41854	   a37e	./arch/x86/events/intel/core.o (ex ./arch/x86/built-in.a)
  28362	    746	      2	  29110	   71b6	./net/packet/af_packet.o (ex ./net/packet/built-in.a)
  28362	    746	      2	  29110	   71b6	./net/packet/af_packet.o (ex ./net/built-in.a)
  28337	    272	      0	  28609	   6fc1	./drivers/gpu/drm/i915/display/intel_hdmi.o (ex ./drivers/gpu/drm/i915/built-in.a)
  28337	    272	      0	  28609	   6fc1	./drivers/gpu/drm/i915/display/intel_hdmi.o (ex ./drivers/gpu/drm/built-in.a)
  28337	    272	      0	  28609	   6fc1	./drivers/gpu/drm/i915/display/intel_hdmi.o (ex ./drivers/gpu/built-in.a)
  28337	    272	      0	  28609	   6fc1	./drivers/gpu/drm/i915/display/intel_hdmi.o (ex ./drivers/built-in.a)
  27781	    178	    140	  28099	   6dc3	./net/ipv4/tcp.o (ex ./net/ipv4/built-in.a)
  27781	    178	    140	  28099	   6dc3	./net/ipv4/tcp.o (ex ./net/built-in.a)
  27723	   1152	     24	  28899	   70e3	./drivers/scsi/sd.o (ex ./drivers/scsi/built-in.a)
  27723	   1152	     24	  28899	   70e3	./drivers/scsi/sd.o (ex ./drivers/built-in.a)
  27687	   3063	    680	  31430	   7ac6	./kernel/workqueue.o (ex ./kernel/built-in.a)
  27687	    107	      0	  27794	   6c92	./net/core/neighbour.o (ex ./net/core/built-in.a)
  27687	    107	      0	  27794	   6c92	./net/core/neighbour.o (ex ./net/built-in.a)
  27257	    152	      0	  27409	   6b11	./fs/namei.o (ex ./fs/built-in.a)
  27007	   1976	      1	  28984	   7138	./drivers/ata/ahci.o (ex ./drivers/built-in.a)
  27007	   1976	      1	  28984	   7138	./drivers/ata/ahci.o (ex ./drivers/ata/built-in.a)
  26774	    240	      0	  27014	   6986	./block/blk-mq.o (ex ./block/built-in.a)
  25877	    276	   8416	  34569	   8709	./drivers/video/fbdev/core/fbcon.o (ex ./drivers/video/fbdev/core/built-in.a)
  25877	    276	   8416	  34569	   8709	./drivers/video/fbdev/core/fbcon.o (ex ./drivers/video/fbdev/built-in.a)
  25877	    276	   8416	  34569	   8709	./drivers/video/fbdev/core/fbcon.o (ex ./drivers/video/built-in.a)
  25877	    276	   8416	  34569	   8709	./drivers/video/fbdev/core/fbcon.o (ex ./drivers/built-in.a)
  25854	    464	     20	  26338	   66e2	./drivers/usb/core/hub.o (ex ./drivers/usb/core/built-in.a)
  25854	    464	     20	  26338	   66e2	./drivers/usb/core/hub.o (ex ./drivers/usb/built-in.a)
  25854	    464	     20	  26338	   66e2	./drivers/usb/core/hub.o (ex ./drivers/built-in.a)
  25313	      0	      0	  25313	   62e1	./arch/x86/purgatory/kexec-purgatory.o (ex ./arch/x86/purgatory/built-in.a)
  25313	      0	      0	  25313	   62e1	./arch/x86/purgatory/kexec-purgatory.o (ex ./arch/x86/built-in.a)
  25236	      8	      0	  25244	   629c	./lib/crc32.o (ex ./lib/built-in.a)
  25224	    128	      0	  25352	   6308	./drivers/ata/libata-eh.o (ex ./drivers/built-in.a)
  25224	    128	      0	  25352	   6308	./drivers/ata/libata-eh.o (ex ./drivers/ata/built-in.a)
  24772	    421	     32	  25225	   6289	./fs/namespace.o (ex ./fs/built-in.a)
  24608	     43	      0	  24651	   604b	./fs/proc/base.o (ex ./fs/proc/built-in.a)
  24608	     43	      0	  24651	   604b	./fs/proc/base.o (ex ./fs/built-in.a)
  24605	     16	      0	  24621	   602d	./drivers/gpu/drm/i915/gt/intel_lrc.o (ex ./drivers/gpu/drm/i915/built-in.a)
  24605	     16	      0	  24621	   602d	./drivers/gpu/drm/i915/gt/intel_lrc.o (ex ./drivers/gpu/drm/built-in.a)
  24605	     16	      0	  24621	   602d	./drivers/gpu/drm/i915/gt/intel_lrc.o (ex ./drivers/gpu/built-in.a)
  24605	     16	      0	  24621	   602d	./drivers/gpu/drm/i915/gt/intel_lrc.o (ex ./drivers/built-in.a)
  24099	    114	      0	  24213	   5e95	./drivers/gpu/drm/i915/i915_perf.o (ex ./drivers/gpu/drm/i915/built-in.a)
  24099	    114	      0	  24213	   5e95	./drivers/gpu/drm/i915/i915_perf.o (ex ./drivers/gpu/drm/built-in.a)
  24099	    114	      0	  24213	   5e95	./drivers/gpu/drm/i915/i915_perf.o (ex ./drivers/gpu/built-in.a)
  24099	    114	      0	  24213	   5e95	./drivers/gpu/drm/i915/i915_perf.o (ex ./drivers/built-in.a)
  24002	    641	     16	  24659	   6053	./drivers/md/dm-crypt.o (ex ./drivers/md/built-in.a)
  24002	    641	     16	  24659	   6053	./drivers/md/dm-crypt.o (ex ./drivers/built-in.a)
  23885	   3169	      8	  27062	   69b6	./kernel/sched/core.o (ex ./kernel/sched/built-in.a)
  23885	   3169	      8	  27062	   69b6	./kernel/sched/core.o (ex ./kernel/built-in.a)
  23763	     16	      0	  23779	   5ce3	./drivers/gpu/drm/i915/display/intel_lvds.o (ex ./drivers/gpu/drm/i915/built-in.a)
  23763	     16	      0	  23779	   5ce3	./drivers/gpu/drm/i915/display/intel_lvds.o (ex ./drivers/gpu/drm/built-in.a)
  23763	     16	      0	  23779	   5ce3	./drivers/gpu/drm/i915/display/intel_lvds.o (ex ./drivers/gpu/built-in.a)
  23763	     16	      0	  23779	   5ce3	./drivers/gpu/drm/i915/display/intel_lvds.o (ex ./drivers/built-in.a)
  23087	    316	     16	  23419	   5b7b	./net/core/sock.o (ex ./net/core/built-in.a)
  23087	    316	     16	  23419	   5b7b	./net/core/sock.o (ex ./net/built-in.a)
  22981	   2416	     60	  25457	   6371	./drivers/base/core.o (ex ./drivers/built-in.a)
  22981	   2416	     60	  25457	   6371	./drivers/base/core.o (ex ./drivers/base/built-in.a)
  22935	    132	      4	  23071	   5a1f	./fs/ext4/xattr.o (ex ./fs/ext4/built-in.a)
  22935	    132	      4	  23071	   5a1f	./fs/ext4/xattr.o (ex ./fs/built-in.a)
  22907	    792	     18	  23717	   5ca5	./net/ipv4/udp.o (ex ./net/ipv4/built-in.a)
  22907	    792	     18	  23717	   5ca5	./net/ipv4/udp.o (ex ./net/built-in.a)
  22781	    108	     96	  22985	   59c9	./kernel/sched/fair.o (ex ./kernel/sched/built-in.a)
  22781	    108	     96	  22985	   59c9	./kernel/sched/fair.o (ex ./kernel/built-in.a)
  22431	    168	     24	  22623	   585f	./mm/shmem.o (ex ./mm/built-in.a)
  22306	    196	     48	  22550	   5816	./mm/memory.o (ex ./mm/built-in.a)
  21915	 919117	 272980	1214012	 12863c	./kernel/printk/printk.o (ex ./kernel/printk/built-in.a)
  21915	 919117	 272980	1214012	 12863c	./kernel/printk/printk.o (ex ./kernel/built-in.a)
  21861	    309	     18	  22188	   56ac	./net/ethtool/ioctl.o (ex ./net/ethtool/built-in.a)
  21861	    309	     18	  22188	   56ac	./net/ethtool/ioctl.o (ex ./net/built-in.a)
  21746	    132	      0	  21878	   5576	./drivers/gpu/drm/i915/intel_uncore.o (ex ./drivers/gpu/drm/i915/built-in.a)
  21746	    132	      0	  21878	   5576	./drivers/gpu/drm/i915/intel_uncore.o (ex ./drivers/gpu/drm/built-in.a)
  21746	    132	      0	  21878	   5576	./drivers/gpu/drm/i915/intel_uncore.o (ex ./drivers/gpu/built-in.a)
  21746	    132	      0	  21878	   5576	./drivers/gpu/drm/i915/intel_uncore.o (ex ./drivers/built-in.a)
  21726	     88	    580	  22394	   577a	./drivers/ata/libata-scsi.o (ex ./drivers/built-in.a)
  21726	     88	    580	  22394	   577a	./drivers/ata/libata-scsi.o (ex ./drivers/ata/built-in.a)
  21563	    788	      8	  22359	   5757	./net/ipv4/route.o (ex ./net/ipv4/built-in.a)
  21563	    788	      8	  22359	   5757	./net/ipv4/route.o (ex ./net/built-in.a)
  21497	    185	      0	  21682	   54b2	./net/ipv4/tcp_output.o (ex ./net/ipv4/built-in.a)
  21497	    185	      0	  21682	   54b2	./net/ipv4/tcp_output.o (ex ./net/built-in.a)
  21379	    258	      0	  21637	   5485	./drivers/gpu/drm/i915/display/intel_cdclk.o (ex ./drivers/gpu/drm/i915/built-in.a)
  21379	    258	      0	  21637	   5485	./drivers/gpu/drm/i915/display/intel_cdclk.o (ex ./drivers/gpu/drm/built-in.a)
  21379	    258	      0	  21637	   5485	./drivers/gpu/drm/i915/display/intel_cdclk.o (ex ./drivers/gpu/built-in.a)
  21379	    258	      0	  21637	   5485	./drivers/gpu/drm/i915/display/intel_cdclk.o (ex ./drivers/built-in.a)
  21167	    744	     16	  21927	   55a7	./fs/buffer.o (ex ./fs/built-in.a)
  21080	    252	      8	  21340	   535c	./kernel/signal.o (ex ./kernel/built-in.a)
  20974	    281	      0	  21255	   5307	./drivers/gpu/drm/drm_atomic_helper.o (ex ./drivers/gpu/drm/built-in.a)
  20974	    281	      0	  21255	   5307	./drivers/gpu/drm/drm_atomic_helper.o (ex ./drivers/gpu/built-in.a)
  20974	    281	      0	  21255	   5307	./drivers/gpu/drm/drm_atomic_helper.o (ex ./drivers/built-in.a)
  20836	    408	    113	  21357	   536d	./drivers/usb/core/devio.o (ex ./drivers/usb/core/built-in.a)
  20836	    408	    113	  21357	   536d	./drivers/usb/core/devio.o (ex ./drivers/usb/built-in.a)
  20836	    408	    113	  21357	   536d	./drivers/usb/core/devio.o (ex ./drivers/built-in.a)
  20716	     48	      0	  20764	   511c	./drivers/gpu/drm/i915/display/intel_sprite.o (ex ./drivers/gpu/drm/i915/built-in.a)
  20716	     48	      0	  20764	   511c	./drivers/gpu/drm/i915/display/intel_sprite.o (ex ./drivers/gpu/drm/built-in.a)
  20716	     48	      0	  20764	   511c	./drivers/gpu/drm/i915/display/intel_sprite.o (ex ./drivers/gpu/built-in.a)
  20716	     48	      0	  20764	   511c	./drivers/gpu/drm/i915/display/intel_sprite.o (ex ./drivers/built-in.a)
  20621	    201	      0	  20822	   5156	./lib/iov_iter.o (ex ./lib/built-in.a)
  20564	    784	     16	  21364	   5374	./net/netlink/af_netlink.o (ex ./net/netlink/built-in.a)
  20564	    784	     16	  21364	   5374	./net/netlink/af_netlink.o (ex ./net/built-in.a)
  20530	     80	      0	  20610	   5082	./drivers/gpu/drm/i915/display/intel_hdcp.o (ex ./drivers/gpu/drm/i915/built-in.a)
  20530	     80	      0	  20610	   5082	./drivers/gpu/drm/i915/display/intel_hdcp.o (ex ./drivers/gpu/drm/built-in.a)
  20530	     80	      0	  20610	   5082	./drivers/gpu/drm/i915/display/intel_hdcp.o (ex ./drivers/gpu/built-in.a)
  20530	     80	      0	  20610	   5082	./drivers/gpu/drm/i915/display/intel_hdcp.o (ex ./drivers/built-in.a)
  20308	     40	      0	  20348	   4f7c	./drivers/hid/hid-input.o (ex ./drivers/hid/built-in.a)
  20308	     40	      0	  20348	   4f7c	./drivers/hid/hid-input.o (ex ./drivers/built-in.a)
  20295	    920	     37	  21252	   5304	./drivers/input/keyboard/atkbd.o (ex ./drivers/input/keyboard/built-in.a)
  20295	    920	     37	  21252	   5304	./drivers/input/keyboard/atkbd.o (ex ./drivers/input/built-in.a)
  20295	    920	     37	  21252	   5304	./drivers/input/keyboard/atkbd.o (ex ./drivers/built-in.a)
  20019	    760	      0	  20779	   512b	./drivers/tty/serial/serial_core.o (ex ./drivers/tty/serial/built-in.a)
  20019	    760	      0	  20779	   512b	./drivers/tty/serial/serial_core.o (ex ./drivers/tty/built-in.a)
  20019	    760	      0	  20779	   512b	./drivers/tty/serial/serial_core.o (ex ./drivers/built-in.a)
  19912	    304	      0	  20216	   4ef8	./drivers/pci/probe.o (ex ./drivers/pci/built-in.a)
  19912	    304	      0	  20216	   4ef8	./drivers/pci/probe.o (ex ./drivers/built-in.a)
  19886	    313	    112	  20311	   4f57	./drivers/iommu/intel/dmar.o (ex ./drivers/iommu/intel/built-in.a)
  19886	    313	    112	  20311	   4f57	./drivers/iommu/intel/dmar.o (ex ./drivers/iommu/built-in.a)
  19886	    313	    112	  20311	   4f57	./drivers/iommu/intel/dmar.o (ex ./drivers/built-in.a)
  19617	   1120	  17548	  38285	   958d	./arch/x86/kernel/apic/io_apic.o (ex ./arch/x86/kernel/built-in.a)
  19617	   1120	  17548	  38285	   958d	./arch/x86/kernel/apic/io_apic.o (ex ./arch/x86/kernel/apic/built-in.a)
  19617	   1120	  17548	  38285	   958d	./arch/x86/kernel/apic/io_apic.o (ex ./arch/x86/built-in.a)
  19357	    396	    276	  20029	   4e3d	./drivers/tty/tty_io.o (ex ./drivers/tty/built-in.a)
  19357	    396	    276	  20029	   4e3d	./drivers/tty/tty_io.o (ex ./drivers/built-in.a)
  19351	    568	   4136	  24055	   5df7	./net/unix/af_unix.o (ex ./net/unix/built-in.a)
  19351	    568	   4136	  24055	   5df7	./net/unix/af_unix.o (ex ./net/built-in.a)
  19348	    713	     72	  20133	   4ea5	./mm/vmalloc.o (ex ./mm/built-in.a)
  19124	    136	     40	  19300	   4b64	./kernel/bpf/core.o (ex ./kernel/built-in.a)
  19124	    136	     40	  19300	   4b64	./kernel/bpf/core.o (ex ./kernel/bpf/built-in.a)
  19006	    880	    104	  19990	   4e16	./drivers/md/dm-snap.o (ex ./drivers/md/built-in.a)
  19006	    880	    104	  19990	   4e16	./drivers/md/dm-snap.o (ex ./drivers/built-in.a)
  18874	    280	      0	  19154	   4ad2	./drivers/gpu/drm/i915/i915_pci.o (ex ./drivers/gpu/drm/i915/built-in.a)
  18874	    280	      0	  19154	   4ad2	./drivers/gpu/drm/i915/i915_pci.o (ex ./drivers/gpu/drm/built-in.a)
  18874	    280	      0	  19154	   4ad2	./drivers/gpu/drm/i915/i915_pci.o (ex ./drivers/gpu/built-in.a)
  18874	    280	      0	  19154	   4ad2	./drivers/gpu/drm/i915/i915_pci.o (ex ./drivers/built-in.a)
  18834	     32	      0	  18866	   49b2	./drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o (ex ./drivers/gpu/drm/i915/built-in.a)
  18834	     32	      0	  18866	   49b2	./drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o (ex ./drivers/gpu/drm/built-in.a)
  18834	     32	      0	  18866	   49b2	./drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o (ex ./drivers/gpu/built-in.a)
  18834	     32	      0	  18866	   49b2	./drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o (ex ./drivers/built-in.a)
  18693	    409	    104	  19206	   4b06	./fs/jbd2/journal.o (ex ./fs/jbd2/built-in.a)
  18693	    409	    104	  19206	   4b06	./fs/jbd2/journal.o (ex ./fs/built-in.a)
  18490	    188	      4	  18682	   48fa	./drivers/cdrom/cdrom.o (ex ./drivers/cdrom/built-in.a)
  18490	    188	      4	  18682	   48fa	./drivers/cdrom/cdrom.o (ex ./drivers/built-in.a)
  18370	    440	     28	  18838	   4996	./drivers/md/dm.o (ex ./drivers/md/built-in.a)
  18370	    440	     28	  18838	   4996	./drivers/md/dm.o (ex ./drivers/built-in.a)
  18234	   6252	      0	  24486	   5fa6	./mm/filemap.o (ex ./mm/built-in.a)
  18103	     65	      0	  18168	   46f8	./drivers/base/regmap/regmap.o (ex ./drivers/built-in.a)
  18103	     65	      0	  18168	   46f8	./drivers/base/regmap/regmap.o (ex ./drivers/base/regmap/built-in.a)
  18103	     65	      0	  18168	   46f8	./drivers/base/regmap/regmap.o (ex ./drivers/base/built-in.a)
  18083	   1184	     16	  19283	   4b53	./drivers/input/input.o (ex ./drivers/input/built-in.a)
  18083	   1184	     16	  19283	   4b53	./drivers/input/input.o (ex ./drivers/built-in.a)
  18079	   1117	      8	  19204	   4b04	./drivers/ata/libahci.o (ex ./drivers/built-in.a)
  18079	   1117	      8	  19204	   4b04	./drivers/ata/libahci.o (ex ./drivers/ata/built-in.a)
  17902	    505	     12	  18419	   47f3	./drivers/hid/hid-core.o (ex ./drivers/hid/built-in.a)
  17902	    505	     12	  18419	   47f3	./drivers/hid/hid-core.o (ex ./drivers/built-in.a)
  17736	    666	     28	  18430	   47fe	./net/socket.o (ex ./net/built-in.a)
  17602	    310	      1	  17913	   45f9	./mm/mmap.o (ex ./mm/built-in.a)
  17316	    412	     56	  17784	   4578	./drivers/acpi/ec.o (ex ./drivers/built-in.a)
  17316	    412	     56	  17784	   4578	./drivers/acpi/ec.o (ex ./drivers/acpi/built-in.a)
  17309	    816	    104	  18229	   4735	./kernel/module.o (ex ./kernel/built-in.a)
  17299	    481	     18	  17798	   4586	./drivers/acpi/acpi_video.o (ex ./drivers/built-in.a)
  17299	    481	     18	  17798	   4586	./drivers/acpi/acpi_video.o (ex ./drivers/acpi/built-in.a)
  17280	    692	      0	  17972	   4634	./drivers/nvdimm/namespace_devs.o (ex ./drivers/nvdimm/built-in.a)
  17280	    692	      0	  17972	   4634	./drivers/nvdimm/namespace_devs.o (ex ./drivers/built-in.a)
  17267	    393	     44	  17704	   4528	./drivers/clk/clk.o (ex ./drivers/clk/built-in.a)
  17267	    393	     44	  17704	   4528	./drivers/clk/clk.o (ex ./drivers/built-in.a)
  17182	   2148	     64	  19394	   4bc2	./drivers/cpufreq/cpufreq.o (ex ./drivers/cpufreq/built-in.a)
  17182	   2148	     64	  19394	   4bc2	./drivers/cpufreq/cpufreq.o (ex ./drivers/built-in.a)
  17163	    961	    112	  18236	   473c	./mm/percpu.o (ex ./mm/built-in.a)
  17098	    130	      8	  17236	   4354	./fs/fat/inode.o (ex ./fs/fat/built-in.a)
  17098	    130	      8	  17236	   4354	./fs/fat/inode.o (ex ./fs/built-in.a)
  16972	     80	      0	  17052	   429c	./drivers/gpu/drm/i915/display/icl_dsi.o (ex ./drivers/gpu/drm/i915/built-in.a)
  16972	     80	      0	  17052	   429c	./drivers/gpu/drm/i915/display/icl_dsi.o (ex ./drivers/gpu/drm/built-in.a)
  16972	     80	      0	  17052	   429c	./drivers/gpu/drm/i915/display/icl_dsi.o (ex ./drivers/gpu/built-in.a)
  16972	     80	      0	  17052	   429c	./drivers/gpu/drm/i915/display/icl_dsi.o (ex ./drivers/built-in.a)
  16893	    264	   1888	  19045	   4a65	./fs/locks.o (ex ./fs/built-in.a)
  16890	    294	      0	  17184	   4320	./drivers/gpu/drm/drm_vblank.o (ex ./drivers/gpu/drm/built-in.a)
  16890	    294	      0	  17184	   4320	./drivers/gpu/drm/drm_vblank.o (ex ./drivers/gpu/built-in.a)
  16890	    294	      0	  17184	   4320	./drivers/gpu/drm/drm_vblank.o (ex ./drivers/built-in.a)
  16803	    712	    576	  18091	   46ab	./net/ipv4/tcp_ipv4.o (ex ./net/ipv4/built-in.a)
  16803	    712	    576	  18091	   46ab	./net/ipv4/tcp_ipv4.o (ex ./net/built-in.a)
  16758	     80	      0	  16838	   41c6	./fs/ext4/resize.o (ex ./fs/ext4/built-in.a)
  16758	     80	      0	  16838	   41c6	./fs/ext4/resize.o (ex ./fs/built-in.a)
  16647	     40	      0	  16687	   412f	./drivers/gpu/drm/i915/gem/i915_gem_context.o (ex ./drivers/gpu/drm/i915/built-in.a)
  16647	     40	      0	  16687	   412f	./drivers/gpu/drm/i915/gem/i915_gem_context.o (ex ./drivers/gpu/drm/built-in.a)
  16647	     40	      0	  16687	   412f	./drivers/gpu/drm/i915/gem/i915_gem_context.o (ex ./drivers/gpu/built-in.a)
  16647	     40	      0	  16687	   412f	./drivers/gpu/drm/i915/gem/i915_gem_context.o (ex ./drivers/built-in.a)
  16577	    144	      0	  16721	   4151	./drivers/gpu/drm/i915/display/intel_panel.o (ex ./drivers/gpu/drm/i915/built-in.a)
  16577	    144	      0	  16721	   4151	./drivers/gpu/drm/i915/display/intel_panel.o (ex ./drivers/gpu/drm/built-in.a)
  16577	    144	      0	  16721	   4151	./drivers/gpu/drm/i915/display/intel_panel.o (ex ./drivers/gpu/built-in.a)
  16577	    144	      0	  16721	   4151	./drivers/gpu/drm/i915/display/intel_panel.o (ex ./drivers/built-in.a)
  16546	    297	     28	  16871	   41e7	./drivers/scsi/sg.o (ex ./drivers/scsi/built-in.a)
  16546	    297	     28	  16871	   41e7	./drivers/scsi/sg.o (ex ./drivers/built-in.a)
  16379	    476	   8192	  25047	   61d7	./fs/dcache.o (ex ./fs/built-in.a)
  16326	     41	      0	  16367	   3fef	./drivers/gpu/drm/i915/display/intel_bios.o (ex ./drivers/gpu/drm/i915/built-in.a)
  16326	     41	      0	  16367	   3fef	./drivers/gpu/drm/i915/display/intel_bios.o (ex ./drivers/gpu/drm/built-in.a)
  16326	     41	      0	  16367	   3fef	./drivers/gpu/drm/i915/display/intel_bios.o (ex ./drivers/gpu/built-in.a)
  16326	     41	      0	  16367	   3fef	./drivers/gpu/drm/i915/display/intel_bios.o (ex ./drivers/built-in.a)
  16255	      8	      1	  16264	   3f88	./drivers/gpu/drm/i915/i915_gpu_error.o (ex ./drivers/gpu/drm/i915/built-in.a)
  16255	      8	      1	  16264	   3f88	./drivers/gpu/drm/i915/i915_gpu_error.o (ex ./drivers/gpu/drm/built-in.a)
  16255	      8	      1	  16264	   3f88	./drivers/gpu/drm/i915/i915_gpu_error.o (ex ./drivers/gpu/built-in.a)
  16255	      8	      1	  16264	   3f88	./drivers/gpu/drm/i915/i915_gpu_error.o (ex ./drivers/built-in.a)
  16219	     32	      0	  16251	   3f7b	./drivers/gpu/drm/drm_ioctl.o (ex ./drivers/gpu/drm/built-in.a)
  16219	     32	      0	  16251	   3f7b	./drivers/gpu/drm/drm_ioctl.o (ex ./drivers/gpu/built-in.a)
  16219	     32	      0	  16251	   3f7b	./drivers/gpu/drm/drm_ioctl.o (ex ./drivers/built-in.a)
  16169	   8952	    128	  25249	   62a1	./arch/x86/events/core.o (ex ./arch/x86/events/built-in.a)
  16169	   8952	    128	  25249	   62a1	./arch/x86/events/core.o (ex ./arch/x86/built-in.a)
  16142	    232	      0	  16374	   3ff6	./drivers/tty/serial/8250/8250_port.o (ex ./drivers/tty/serial/built-in.a)
  16142	    232	      0	  16374	   3ff6	./drivers/tty/serial/8250/8250_port.o (ex ./drivers/tty/serial/8250/built-in.a)
  16142	    232	      0	  16374	   3ff6	./drivers/tty/serial/8250/8250_port.o (ex ./drivers/tty/built-in.a)
  16142	    232	      0	  16374	   3ff6	./drivers/tty/serial/8250/8250_port.o (ex ./drivers/built-in.a)
  16132	    202	     16	  16350	   3fde	./drivers/scsi/scsi_lib.o (ex ./drivers/scsi/built-in.a)
  16132	    202	     16	  16350	   3fde	./drivers/scsi/scsi_lib.o (ex ./drivers/built-in.a)
  16070	    104	      0	  16174	   3f2e	./drivers/gpu/drm/i915/display/intel_psr.o (ex ./drivers/gpu/drm/i915/built-in.a)
  16070	    104	      0	  16174	   3f2e	./drivers/gpu/drm/i915/display/intel_psr.o (ex ./drivers/gpu/drm/built-in.a)
  16070	    104	      0	  16174	   3f2e	./drivers/gpu/drm/i915/display/intel_psr.o (ex ./drivers/gpu/built-in.a)
  16070	    104	      0	  16174	   3f2e	./drivers/gpu/drm/i915/display/intel_psr.o (ex ./drivers/built-in.a)
  16054	    404	     16	  16474	   405a	./drivers/iommu/iommu.o (ex ./drivers/iommu/built-in.a)
  16054	    404	     16	  16474	   405a	./drivers/iommu/iommu.o (ex ./drivers/built-in.a)
  16014	    292	      8	  16314	   3fba	./kernel/futex.o (ex ./kernel/built-in.a)
  15959	    196	      0	  16155	   3f1b	./mm/vmscan.o (ex ./mm/built-in.a)
  15903	    889	     88	  16880	   41f0	./drivers/block/loop.o (ex ./drivers/built-in.a)
  15903	    889	     88	  16880	   41f0	./drivers/block/loop.o (ex ./drivers/block/built-in.a)
  15900	    128	      0	  16028	   3e9c	./fs/ext4/inline.o (ex ./fs/ext4/built-in.a)
  15900	    128	      0	  16028	   3e9c	./fs/ext4/inline.o (ex ./fs/built-in.a)
  15866	   2193	     56	  18115	   46c3	./drivers/cpufreq/intel_pstate.o (ex ./drivers/cpufreq/built-in.a)
  15866	   2193	     56	  18115	   46c3	./drivers/cpufreq/intel_pstate.o (ex ./drivers/built-in.a)
  15699	    867	   2048	  18614	   48b6	./net/ipv4/devinet.o (ex ./net/ipv4/built-in.a)
  15699	    867	   2048	  18614	   48b6	./net/ipv4/devinet.o (ex ./net/built-in.a)
  15576	    116	     36	  15728	   3d70	./arch/x86/kernel/reboot.o (ex ./arch/x86/kernel/built-in.a)
  15576	    116	     36	  15728	   3d70	./arch/x86/kernel/reboot.o (ex ./arch/x86/built-in.a)
  15525	    236	     76	  15837	   3ddd	./kernel/fork.o (ex ./kernel/built-in.a)
  15472	     40	      0	  15512	   3c98	./drivers/md/dm-thin-metadata.o (ex ./drivers/md/built-in.a)
  15472	     40	      0	  15512	   3c98	./drivers/md/dm-thin-metadata.o (ex ./drivers/built-in.a)
  15459	     60	      4	  15523	   3ca3	./net/ipv4/fib_trie.o (ex ./net/ipv4/built-in.a)
  15459	     60	      4	  15523	   3ca3	./net/ipv4/fib_trie.o (ex ./net/built-in.a)
  15382	      8	      0	  15390	   3c1e	./drivers/gpu/drm/i915/i915_cmd_parser.o (ex ./drivers/gpu/drm/i915/built-in.a)
  15382	      8	      0	  15390	   3c1e	./drivers/gpu/drm/i915/i915_cmd_parser.o (ex ./drivers/gpu/drm/built-in.a)
  15382	      8	      0	  15390	   3c1e	./drivers/gpu/drm/i915/i915_cmd_parser.o (ex ./drivers/gpu/built-in.a)
  15382	      8	      0	  15390	   3c1e	./drivers/gpu/drm/i915/i915_cmd_parser.o (ex ./drivers/built-in.a)
  15333	    200	   2048	  17581	   44ad	./drivers/md/dm-ioctl.o (ex ./drivers/md/built-in.a)
  15333	    200	   2048	  17581	   44ad	./drivers/md/dm-ioctl.o (ex ./drivers/built-in.a)
  15279	    592	     32	  15903	   3e1f	./drivers/acpi/scan.o (ex ./drivers/built-in.a)
  15279	    592	     32	  15903	   3e1f	./drivers/acpi/scan.o (ex ./drivers/acpi/built-in.a)
  15163	     96	      3	  15262	   3b9e	./drivers/input/mouse/synaptics.o (ex ./drivers/input/mouse/built-in.a)
  15163	     96	      3	  15262	   3b9e	./drivers/input/mouse/synaptics.o (ex ./drivers/input/built-in.a)
  15163	     96	      3	  15262	   3b9e	./drivers/input/mouse/synaptics.o (ex ./drivers/built-in.a)
  15034	     32	      0	  15066	   3ada	./drivers/gpu/drm/i915/display/vlv_dsi.o (ex ./drivers/gpu/drm/i915/built-in.a)
  15034	     32	      0	  15066	   3ada	./drivers/gpu/drm/i915/display/vlv_dsi.o (ex ./drivers/gpu/drm/built-in.a)
  15034	     32	      0	  15066	   3ada	./drivers/gpu/drm/i915/display/vlv_dsi.o (ex ./drivers/gpu/built-in.a)
  15034	     32	      0	  15066	   3ada	./drivers/gpu/drm/i915/display/vlv_dsi.o (ex ./drivers/built-in.a)
  14934	    716	     13	  15663	   3d2f	./drivers/input/mouse/psmouse-base.o (ex ./drivers/input/mouse/built-in.a)
  14934	    716	     13	  15663	   3d2f	./drivers/input/mouse/psmouse-base.o (ex ./drivers/input/built-in.a)
  14934	    716	     13	  15663	   3d2f	./drivers/input/mouse/psmouse-base.o (ex ./drivers/built-in.a)
  14905	    298	     36	  15239	   3b87	./kernel/irq/manage.o (ex ./kernel/irq/built-in.a)
  14905	    298	     36	  15239	   3b87	./kernel/irq/manage.o (ex ./kernel/built-in.a)
  14773	      0	      0	  14773	   39b5	./arch/x86/entry/entry_64.o (ex ./arch/x86/entry/built-in.a)
  14773	      0	      0	  14773	   39b5	./arch/x86/entry/entry_64.o (ex ./arch/x86/built-in.a)
  14771	     48	      0	  14819	   39e3	./drivers/gpu/drm/i915/display/intel_color.o (ex ./drivers/gpu/drm/i915/built-in.a)
  14771	     48	      0	  14819	   39e3	./drivers/gpu/drm/i915/display/intel_color.o (ex ./drivers/gpu/drm/built-in.a)
  14771	     48	      0	  14819	   39e3	./drivers/gpu/drm/i915/display/intel_color.o (ex ./drivers/gpu/built-in.a)
  14771	     48	      0	  14819	   39e3	./drivers/gpu/drm/i915/display/intel_color.o (ex ./drivers/built-in.a)
  14767	    168	      0	  14935	   3a57	./net/ipv4/nexthop.o (ex ./net/ipv4/built-in.a)
  14767	    168	      0	  14935	   3a57	./net/ipv4/nexthop.o (ex ./net/built-in.a)
  14707	     36	      4	  14747	   399b	./drivers/pci/setup-bus.o (ex ./drivers/pci/built-in.a)
  14707	     36	      4	  14747	   399b	./drivers/pci/setup-bus.o (ex ./drivers/built-in.a)
  14569	   2580	   3744	  20893	   519d	./arch/x86/kernel/cpu/mce/core.o (ex ./arch/x86/kernel/cpu/mce/built-in.a)
  14569	   2580	   3744	  20893	   519d	./arch/x86/kernel/cpu/mce/core.o (ex ./arch/x86/kernel/cpu/built-in.a)
  14569	   2580	   3744	  20893	   519d	./arch/x86/kernel/cpu/mce/core.o (ex ./arch/x86/kernel/built-in.a)
  14569	   2580	   3744	  20893	   519d	./arch/x86/kernel/cpu/mce/core.o (ex ./arch/x86/built-in.a)
  14536	     72	      0	  14608	   3910	./kernel/sys.o (ex ./kernel/built-in.a)
  14473	    144	      4	  14621	   391d	./drivers/usb/core/message.o (ex ./drivers/usb/core/built-in.a)
  14473	    144	      4	  14621	   391d	./drivers/usb/core/message.o (ex ./drivers/usb/built-in.a)
  14473	    144	      4	  14621	   391d	./drivers/usb/core/message.o (ex ./drivers/built-in.a)
  14353	    312	    571	  15236	   3b84	./drivers/tty/vt/keyboard.o (ex ./drivers/tty/vt/built-in.a)
  14353	    312	    571	  15236	   3b84	./drivers/tty/vt/keyboard.o (ex ./drivers/tty/built-in.a)
  14353	    312	    571	  15236	   3b84	./drivers/tty/vt/keyboard.o (ex ./drivers/built-in.a)
  14252	    368	    216	  14836	   39f4	./drivers/md/dm-bufio.o (ex ./drivers/md/built-in.a)
  14252	    368	    216	  14836	   39f4	./drivers/md/dm-bufio.o (ex ./drivers/built-in.a)
  14156	    464	      8	  14628	   3924	./fs/jbd2/transaction.o (ex ./fs/jbd2/built-in.a)
  14156	    464	      8	  14628	   3924	./fs/jbd2/transaction.o (ex ./fs/built-in.a)
  14149	      0	      0	  14149	   3745	./arch/x86/crypto/sha512-avx-asm.o (ex ./arch/x86/crypto/built-in.a)
  14149	      0	      0	  14149	   3745	./arch/x86/crypto/sha512-avx-asm.o (ex ./arch/x86/built-in.a)
  14117	      0	      0	  14117	   3725	./arch/x86/crypto/sha512-ssse3-asm.o (ex ./arch/x86/crypto/built-in.a)
  14117	      0	      0	  14117	   3725	./arch/x86/crypto/sha512-ssse3-asm.o (ex ./arch/x86/built-in.a)
  14077	     64	      0	  14141	   373d	./net/ipv4/ip_output.o (ex ./net/ipv4/built-in.a)
  14077	     64	      0	  14141	   373d	./net/ipv4/ip_output.o (ex ./net/built-in.a)
  13964	   1064	   2088	  17116	   42dc	./block/genhd.o (ex ./block/built-in.a)
  13931	   1540	     32	  15503	   3c8f	./mm/slub.o (ex ./mm/built-in.a)
  13874	     49	      0	  13923	   3663	./drivers/gpu/drm/i915/gt/intel_engine_cs.o (ex ./drivers/gpu/drm/i915/built-in.a)
  13874	     49	      0	  13923	   3663	./drivers/gpu/drm/i915/gt/intel_engine_cs.o (ex ./drivers/gpu/drm/built-in.a)
  13874	     49	      0	  13923	   3663	./drivers/gpu/drm/i915/gt/intel_engine_cs.o (ex ./drivers/gpu/built-in.a)
  13874	     49	      0	  13923	   3663	./drivers/gpu/drm/i915/gt/intel_engine_cs.o (ex ./drivers/built-in.a)
  13861	    331	     20	  14212	   3784	./drivers/usb/core/hcd.o (ex ./drivers/usb/core/built-in.a)
  13861	    331	     20	  14212	   3784	./drivers/usb/core/hcd.o (ex ./drivers/usb/built-in.a)
  13861	    331	     20	  14212	   3784	./drivers/usb/core/hcd.o (ex ./drivers/built-in.a)
  13740	    249	     24	  14013	   36bd	./kernel/sched/deadline.o (ex ./kernel/sched/built-in.a)
  13740	    249	     24	  14013	   36bd	./kernel/sched/deadline.o (ex ./kernel/built-in.a)
  13675	    205	      1	  13881	   3639	./drivers/gpu/drm/drm_fb_helper.o (ex ./drivers/gpu/drm/built-in.a)
  13675	    205	      1	  13881	   3639	./drivers/gpu/drm/drm_fb_helper.o (ex ./drivers/gpu/built-in.a)
  13675	    205	      1	  13881	   3639	./drivers/gpu/drm/drm_fb_helper.o (ex ./drivers/built-in.a)
  13631	    568	      0	  14199	   3777	./arch/x86/kernel/early-quirks.o (ex ./arch/x86/kernel/built-in.a)
  13631	    568	      0	  14199	   3777	./arch/x86/kernel/early-quirks.o (ex ./arch/x86/built-in.a)
  13556	    276	     68	  13900	   364c	./fs/inode.o (ex ./fs/built-in.a)
  13431	    312	      0	  13743	   35af	./drivers/tty/n_tty.o (ex ./drivers/tty/built-in.a)
  13431	    312	      0	  13743	   35af	./drivers/tty/n_tty.o (ex ./drivers/built-in.a)
  13400	   1040	      8	  14448	   3870	./drivers/i2c/i2c-core-base.o (ex ./drivers/i2c/built-in.a)
  13400	   1040	      8	  14448	   3870	./drivers/i2c/i2c-core-base.o (ex ./drivers/built-in.a)
  13305	   1883	   4164	  19352	   4b98	./arch/x86/kernel/apic/apic.o (ex ./arch/x86/kernel/built-in.a)
  13305	   1883	   4164	  19352	   4b98	./arch/x86/kernel/apic/apic.o (ex ./arch/x86/kernel/apic/built-in.a)
  13305	   1883	   4164	  19352	   4b98	./arch/x86/kernel/apic/apic.o (ex ./arch/x86/built-in.a)
  13217	    320	     48	  13585	   3511	./arch/x86/kernel/acpi/boot.o (ex ./arch/x86/kernel/built-in.a)
  13217	    320	     48	  13585	   3511	./arch/x86/kernel/acpi/boot.o (ex ./arch/x86/kernel/acpi/built-in.a)
  13217	    320	     48	  13585	   3511	./arch/x86/kernel/acpi/boot.o (ex ./arch/x86/built-in.a)
  13168	    244	    224	  13636	   3544	./fs/block_dev.o (ex ./fs/built-in.a)
  13154	     48	      8	  13210	   339a	./fs/ext4/fast_commit.o (ex ./fs/ext4/built-in.a)
  13154	     48	      8	  13210	   339a	./fs/ext4/fast_commit.o (ex ./fs/built-in.a)
  13146	     64	     32	  13242	   33ba	./arch/x86/pci/common.o (ex ./arch/x86/pci/built-in.a)
  12977	    688	      0	  13665	   3561	./drivers/gpu/drm/drm_connector.o (ex ./drivers/gpu/drm/built-in.a)
  12977	    688	      0	  13665	   3561	./drivers/gpu/drm/drm_connector.o (ex ./drivers/gpu/built-in.a)
  12977	    688	      0	  13665	   3561	./drivers/gpu/drm/drm_connector.o (ex ./drivers/built-in.a)
  12971	     35	     12	  13018	   32da	./drivers/gpu/drm/i915/gt/intel_rps.o (ex ./drivers/gpu/drm/i915/built-in.a)
  12971	     35	     12	  13018	   32da	./drivers/gpu/drm/i915/gt/intel_rps.o (ex ./drivers/gpu/drm/built-in.a)
  12971	     35	     12	  13018	   32da	./drivers/gpu/drm/i915/gt/intel_rps.o (ex ./drivers/gpu/built-in.a)
  12971	     35	     12	  13018	   32da	./drivers/gpu/drm/i915/gt/intel_rps.o (ex ./drivers/built-in.a)
  12874	     72	      0	  12946	   3292	./drivers/hid/hid-quirks.o (ex ./drivers/hid/built-in.a)
  12874	     72	      0	  12946	   3292	./drivers/hid/hid-quirks.o (ex ./drivers/built-in.a)
  12484	     40	     89	  12613	   3145	./drivers/acpi/video_detect.o (ex ./drivers/built-in.a)
  12484	     40	     89	  12613	   3145	./drivers/acpi/video_detect.o (ex ./drivers/acpi/built-in.a)
  12371	     72	      0	  12443	   309b	./drivers/md/dm-table.o (ex ./drivers/md/built-in.a)
  12371	     72	      0	  12443	   309b	./drivers/md/dm-table.o (ex ./drivers/built-in.a)
  12313	   3168	      4	  15485	   3c7d	./net/core/net-sysfs.o (ex ./net/core/built-in.a)
  12313	   3168	      4	  15485	   3c7d	./net/core/net-sysfs.o (ex ./net/built-in.a)
  12204	    648	    208	  13060	   3304	./net/ipv4/af_inet.o (ex ./net/ipv4/built-in.a)
  12204	    648	    208	  13060	   3304	./net/ipv4/af_inet.o (ex ./net/built-in.a)
  12120	     16	      0	  12136	   2f68	./fs/fat/dir.o (ex ./fs/fat/built-in.a)
  12120	     16	      0	  12136	   2f68	./fs/fat/dir.o (ex ./fs/built-in.a)
  12091	     40	      0	  12131	   2f63	./fs/ext4/ialloc.o (ex ./fs/ext4/built-in.a)
  12091	     40	      0	  12131	   2f63	./fs/ext4/ialloc.o (ex ./fs/built-in.a)
  11933	    296	    224	  12453	   30a5	./fs/iomap/buffered-io.o (ex ./fs/iomap/built-in.a)
  11933	    296	    224	  12453	   30a5	./fs/iomap/buffered-io.o (ex ./fs/built-in.a)
  11802	   9713	     20	  21535	   541f	./kernel/cpu.o (ex ./kernel/built-in.a)
  11639	     64	      0	  11703	   2db7	./drivers/gpu/drm/drm_dp_helper.o (ex ./drivers/gpu/drm/built-in.a)
  11639	     64	      0	  11703	   2db7	./drivers/gpu/drm/drm_dp_helper.o (ex ./drivers/gpu/built-in.a)
  11639	     64	      0	  11703	   2db7	./drivers/gpu/drm/drm_dp_helper.o (ex ./drivers/built-in.a)
  11635	    312	      9	  11956	   2eb4	./drivers/thermal/thermal_core.o (ex ./drivers/thermal/built-in.a)
  11635	    312	      9	  11956	   2eb4	./drivers/thermal/thermal_core.o (ex ./drivers/built-in.a)
  11618	   2840	    352	  14810	   39da	./drivers/scsi/scsi_sysfs.o (ex ./drivers/scsi/built-in.a)
  11618	   2840	    352	  14810	   39da	./drivers/scsi/scsi_sysfs.o (ex ./drivers/built-in.a)
  11459	    112	      0	  11571	   2d33	./drivers/gpu/drm/drm_atomic.o (ex ./drivers/gpu/drm/built-in.a)
  11459	    112	      0	  11571	   2d33	./drivers/gpu/drm/drm_atomic.o (ex ./drivers/gpu/built-in.a)
  11459	    112	      0	  11571	   2d33	./drivers/gpu/drm/drm_atomic.o (ex ./drivers/built-in.a)
  11445	     83	     44	  11572	   2d34	./arch/x86/mm/pat/set_memory.o (ex ./arch/x86/mm/pat/built-in.a)
  11445	     83	     44	  11572	   2d34	./arch/x86/mm/pat/set_memory.o (ex ./arch/x86/mm/built-in.a)
  11445	     83	     44	  11572	   2d34	./arch/x86/mm/pat/set_memory.o (ex ./arch/x86/built-in.a)
  11425	    120	     12	  11557	   2d25	./fs/super.o (ex ./fs/built-in.a)
  11346	    460	      0	  11806	   2e1e	./drivers/gpu/drm/i915/i915_drv.o (ex ./drivers/gpu/drm/i915/built-in.a)
  11346	    460	      0	  11806	   2e1e	./drivers/gpu/drm/i915/i915_drv.o (ex ./drivers/gpu/drm/built-in.a)
  11346	    460	      0	  11806	   2e1e	./drivers/gpu/drm/i915/i915_drv.o (ex ./drivers/gpu/built-in.a)
  11346	    460	      0	  11806	   2e1e	./drivers/gpu/drm/i915/i915_drv.o (ex ./drivers/built-in.a)
  11339	     16	      0	  11355	   2c5b	./fs/exfat/namei.o (ex ./fs/exfat/built-in.a)
  11339	     16	      0	  11355	   2c5b	./fs/exfat/namei.o (ex ./fs/built-in.a)
  11336	     73	      0	  11409	   2c91	./drivers/gpu/drm/i915/display/intel_audio.o (ex ./drivers/gpu/drm/i915/built-in.a)
  11336	     73	      0	  11409	   2c91	./drivers/gpu/drm/i915/display/intel_audio.o (ex ./drivers/gpu/drm/built-in.a)
  11336	     73	      0	  11409	   2c91	./drivers/gpu/drm/i915/display/intel_audio.o (ex ./drivers/gpu/built-in.a)
  11336	     73	      0	  11409	   2c91	./drivers/gpu/drm/i915/display/intel_audio.o (ex ./drivers/built-in.a)
  11312	    128	      4	  11444	   2cb4	./drivers/scsi/scsi_scan.o (ex ./drivers/scsi/built-in.a)
  11312	    128	      4	  11444	   2cb4	./drivers/scsi/scsi_scan.o (ex ./drivers/built-in.a)
  11187	     96	      8	  11291	   2c1b	./arch/x86/kernel/cpu/intel.o (ex ./arch/x86/kernel/cpu/built-in.a)
  11187	     96	      8	  11291	   2c1b	./arch/x86/kernel/cpu/intel.o (ex ./arch/x86/kernel/built-in.a)
  11187	     96	      8	  11291	   2c1b	./arch/x86/kernel/cpu/intel.o (ex ./arch/x86/built-in.a)
  11155	    469	      0	  11624	   2d68	./drivers/md/dm-verity-target.o (ex ./drivers/md/built-in.a)
  11155	    469	      0	  11624	   2d68	./drivers/md/dm-verity-target.o (ex ./drivers/built-in.a)
  11126	   9530	    168	  20824	   5158	./arch/x86/events/intel/ds.o (ex ./arch/x86/events/intel/built-in.a)
  11126	   9530	    168	  20824	   5158	./arch/x86/events/intel/ds.o (ex ./arch/x86/events/built-in.a)
  11126	   9530	    168	  20824	   5158	./arch/x86/events/intel/ds.o (ex ./arch/x86/built-in.a)
  11118	     86	      6	  11210	   2bca	./drivers/scsi/scsi_error.o (ex ./drivers/scsi/built-in.a)
  11118	     86	      6	  11210	   2bca	./drivers/scsi/scsi_error.o (ex ./drivers/built-in.a)
  11079	    129	      0	  11208	   2bc8	./net/ipv4/fib_frontend.o (ex ./net/ipv4/built-in.a)
  11079	    129	      0	  11208	   2bc8	./net/ipv4/fib_frontend.o (ex ./net/built-in.a)
  11060	     40	   2076	  13176	   3378	./net/ipv4/fib_semantics.o (ex ./net/ipv4/built-in.a)
  11060	     40	   2076	  13176	   3378	./net/ipv4/fib_semantics.o (ex ./net/built-in.a)
  10951	     88	      8	  11047	   2b27	./fs/isofs/inode.o (ex ./fs/isofs/built-in.a)
  10951	     88	      8	  11047	   2b27	./fs/isofs/inode.o (ex ./fs/built-in.a)
  10917	    258	     42	  11217	   2bd1	./arch/x86/kernel/cpu/bugs.o (ex ./arch/x86/kernel/cpu/built-in.a)
  10917	    258	     42	  11217	   2bd1	./arch/x86/kernel/cpu/bugs.o (ex ./arch/x86/kernel/built-in.a)
  10917	    258	     42	  11217	   2bd1	./arch/x86/kernel/cpu/bugs.o (ex ./arch/x86/built-in.a)
  10912	      0	      0	  10912	   2aa0	./drivers/gpu/drm/i915/gt/debugfs_gt_pm.o (ex ./drivers/gpu/drm/i915/built-in.a)
  10912	      0	      0	  10912	   2aa0	./drivers/gpu/drm/i915/gt/debugfs_gt_pm.o (ex ./drivers/gpu/drm/built-in.a)
  10912	      0	      0	  10912	   2aa0	./drivers/gpu/drm/i915/gt/debugfs_gt_pm.o (ex ./drivers/gpu/built-in.a)
  10912	      0	      0	  10912	   2aa0	./drivers/gpu/drm/i915/gt/debugfs_gt_pm.o (ex ./drivers/built-in.a)
  10883	  12079	     32	  22994	   59d2	./mm/memblock.o (ex ./mm/built-in.a)
  10776	     80	    156	  11012	   2b04	./mm/page-writeback.o (ex ./mm/built-in.a)
  10696	    152	     16	  10864	   2a70	./fs/ext4/extents_status.o (ex ./fs/ext4/built-in.a)
  10696	    152	     16	  10864	   2a70	./fs/ext4/extents_status.o (ex ./fs/built-in.a)
  10690	    621	    736	  12047	   2f0f	./kernel/time/timekeeping.o (ex ./kernel/time/built-in.a)
  10690	    621	    736	  12047	   2f0f	./kernel/time/timekeeping.o (ex ./kernel/built-in.a)
  10615	     96	      0	  10711	   29d7	./fs/read_write.o (ex ./fs/built-in.a)
  10602	    230	      0	  10832	   2a50	./net/ipv4/igmp.o (ex ./net/ipv4/built-in.a)
  10602	    230	      0	  10832	   2a50	./net/ipv4/igmp.o (ex ./net/built-in.a)
  10550	     16	      0	  10566	   2946	./drivers/gpu/drm/i915/display/intel_tv.o (ex ./drivers/gpu/drm/i915/built-in.a)
  10550	     16	      0	  10566	   2946	./drivers/gpu/drm/i915/display/intel_tv.o (ex ./drivers/gpu/drm/built-in.a)
  10550	     16	      0	  10566	   2946	./drivers/gpu/drm/i915/display/intel_tv.o (ex ./drivers/gpu/built-in.a)
  10550	     16	      0	  10566	   2946	./drivers/gpu/drm/i915/display/intel_tv.o (ex ./drivers/built-in.a)
  10495	    764	     24	  11283	   2c13	./arch/x86/kernel/smpboot.o (ex ./arch/x86/kernel/built-in.a)
  10495	    764	     24	  11283	   2c13	./arch/x86/kernel/smpboot.o (ex ./arch/x86/built-in.a)
  10365	    617	    672	  11654	   2d86	./drivers/char/random.o (ex ./drivers/char/built-in.a)
  10365	    617	    672	  11654	   2d86	./drivers/char/random.o (ex ./drivers/built-in.a)
  10248	    693	     24	  10965	   2ad5	./drivers/acpi/battery.o (ex ./drivers/built-in.a)
  10248	    693	     24	  10965	   2ad5	./drivers/acpi/battery.o (ex ./drivers/acpi/built-in.a)
  10154	      8	      0	  10162	   27b2	./drivers/gpu/drm/i915/gt/intel_reset.o (ex ./drivers/gpu/drm/i915/built-in.a)
  10154	      8	      0	  10162	   27b2	./drivers/gpu/drm/i915/gt/intel_reset.o (ex ./drivers/gpu/drm/built-in.a)
  10154	      8	      0	  10162	   27b2	./drivers/gpu/drm/i915/gt/intel_reset.o (ex ./drivers/gpu/built-in.a)
  10154	      8	      0	  10162	   27b2	./drivers/gpu/drm/i915/gt/intel_reset.o (ex ./drivers/built-in.a)
  10146	     40	      0	  10186	   27ca	./drivers/gpu/drm/i915/gt/intel_ggtt.o (ex ./drivers/gpu/drm/i915/built-in.a)
  10146	     40	      0	  10186	   27ca	./drivers/gpu/drm/i915/gt/intel_ggtt.o (ex ./drivers/gpu/drm/built-in.a)
  10146	     40	      0	  10186	   27ca	./drivers/gpu/drm/i915/gt/intel_ggtt.o (ex ./drivers/gpu/built-in.a)
  10146	     40	      0	  10186	   27ca	./drivers/gpu/drm/i915/gt/intel_ggtt.o (ex ./drivers/built-in.a)
  10072	     89	     16	  10177	   27c1	./fs/exec.o (ex ./fs/built-in.a)
  10009	     56	      8	  10073	   2759	./fs/libfs.o (ex ./fs/built-in.a)

@tlaurion
Copy link
Collaborator Author

So we got rid of i915drm and freed 500kb in kernel switching to efifb! What next can be reduced?

@tlaurion
Copy link
Collaborator Author

tlaurion commented Sep 7, 2023

Also note that each builds produce sizes.txt for easier comparison for a while now. So it's easy to test changes for size comparison across builds to help the continual quest for firmware footprint reduction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants