Alexey asked which boards actually carry this and what it costs them, so
here is the data.

Nothing selects ZSTD except fs/btrfs/Kconfig, and nothing selects FS_BTRFS
except CMD_BTRFS in cmd/Kconfig. So a board pays for zstd only if its
defconfig sets CONFIG_ZSTD, CONFIG_FS_BTRFS or CONFIG_CMD_BTRFS, either
directly or through an included .config fragment. Resolving those includes
transitively, that is 41 of 1550 defconfigs:

  am62px_evm_a53                      am62x_evm_a53
  am64x_evm_a53                       dh_imx6
  hc2910_2aghd05                      imx6_dhcom_drc02
  imx6_dhcom_pdk2                     imx6_dhcom_picoitx
  imx8mm-mx8menlo                     imx8mm_data_modul_edm_sbc
  imx8mp_data_modul_edm_sbc           imx8mp_dhcom_drc02
  imx8mp_dhcom_pdk2                   imx8mp_dhcom_pdk3
  imx8mp_dhcom_picoitx                kontron-osm-s-mx8mp
  kontron-osm-s-mx93                  kontron-sl-mx8mm
  m53menlo                            mvebu_espressobin-88f3720
  mvebu_espressobin_ultra-88f3720     sandbox
  sandbox64                           sandbox_flattree
  sandbox_noinst                      sandbox_spl
  sandbox_vpl                         stm32mp13_dhcor
  stm32mp15_dhcom_basic               stm32mp15_dhcom_drc02_basic
  stm32mp15_dhcom_pdk2_basic          stm32mp15_dhcom_picoitx_basic
  stm32mp15_dhcor_avenger96_basic     stm32mp15_dhcor_basic
  stm32mp15_dhcor_drc_compact_basic   stm32mp15_dhcor_testbench_basic
  th1520_lpi4a                        turris_1x_nor
  turris_1x_sdcard                    turris_mox
  turris_omnia

Text growth, measured base vs this patch:

  turris_mox                  +1920
  mvebu_espressobin-88f3720   +1920
  am62x_evm_a53               +2072
  kontron-sl-mx8mm            +2072
  imx8mp_dhcom_pdk2           +2072
  sandbox                     +2888

data and bss are unchanged on every one of them. ZSTD_LIB_MINIFY is default y
under ZSTD and none of the affected defconfigs turn it off, so those are the
numbers boards actually ship. The three i.MX8MP/AM62x figures come from the
linked ELF; those builds stop later at binman for want of vendor blobs I do
not have, with no compile errors.

On a board without zstd there is no change at all. I built qemu_arm64 at the
parent commit and at this patch with SOURCE_DATE_EPOCH pinned: .text and
.text_rest are byte for byte identical.

It is also not in xPL. SPL_ZSTD is a separate symbol, no defconfig enables it
and nothing selects it, so this only lands in U-Boot proper.

I did not measure the RISC-V, PowerPC or 32-bit ARM boards in that list, as I
have no toolchain for them here.

Reply via email to