diff options
-rw-r--r-- | Makefile.inc | 5 | ||||
-rw-r--r-- | src/Kconfig | 35 | ||||
-rw-r--r-- | src/lib/Makefile.inc | 4 | ||||
-rw-r--r-- | src/lib/cbfs.c | 2 |
4 files changed, 35 insertions, 11 deletions
diff --git a/Makefile.inc b/Makefile.inc index 5cd13ba6f4..2b5d742a2c 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -372,9 +372,12 @@ cbfs-files-handler= \ ####################################################################### # a variety of flags for our build CBFS_COMPRESS_FLAG:=none -ifeq ($(CONFIG_COMPRESS_RAMSTAGE),y) +ifeq ($(CONFIG_COMPRESS_RAMSTAGE_LZMA),y) CBFS_COMPRESS_FLAG:=LZMA endif +ifeq ($(CONFIG_COMPRESS_RAMSTAGE_LZ4),y) +CBFS_COMPRESS_FLAG:=LZ4 +endif CBFS_PAYLOAD_COMPRESS_FLAG:=none ifeq ($(CONFIG_COMPRESSED_PAYLOAD_LZMA),y) diff --git a/src/Kconfig b/src/Kconfig index f68553c2a0..8246a17a3e 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -170,12 +170,36 @@ config STATIC_OPTION_TABLE every boot. Use this if you want the NVRAM configuration to never be modified from its default values. -config COMPRESS_RAMSTAGE +config MB_COMPRESS_RAMSTAGE_LZ4 + bool + help + Select this in a mainboard to use LZ4 compression by default + +choice + prompt "Ramstage compression" + depends on HAVE_RAMSTAGE && !UNCOMPRESSED_RAMSTAGE + default COMPRESS_RAMSTAGE_LZ4 if MB_COMPRESS_RAMSTAGE_LZ4 + default COMPRESS_RAMSTAGE_LZMA + +config COMPRESS_RAMSTAGE_LZMA bool "Compress ramstage with LZMA" - depends on HAVE_RAMSTAGE - # Default value set at the end of the file help - Compress ramstage to save memory in the flash image. + Compress ramstage with LZMA to save memory in the flash image. + +config COMPRESS_RAMSTAGE_LZ4 + bool "Compress ramstage with LZ4" + help + LZ4 doesn't give as good compression as LZMA, but decompresses much + faster. For large binaries such as ramstage, it's typically best to + use LZMA, but there can be cases where the faster decompression of + LZ4 can lead to a faster boot time. Testing on each individual board + is typically going to be needed due to the large number of factors + that can influence the decision. Binary size, CPU speed, ROM read + speed, cache, and other factors all play a part. + + If you're not sure, stick with LZMA. + +endchoice config COMPRESS_PRERAM_STAGES bool "Compress romstage and verstage with LZ4" @@ -1379,9 +1403,6 @@ config MEMLAYOUT_LD_FILE # Set default values for symbols created before mainboards. This allows the # option to be displayed in the general menu, but the default to be loaded in # the mainboard if desired. -config COMPRESS_RAMSTAGE - default y if !UNCOMPRESSED_RAMSTAGE - config COMPRESS_PRERAM_STAGES depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES default y diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc index dcba0c61db..030959c9c6 100644 --- a/src/lib/Makefile.inc +++ b/src/lib/Makefile.inc @@ -95,7 +95,7 @@ $(foreach arch,$(ARCH_SUPPORTED),\ romstage-y += fmap.c romstage-y += delay.c romstage-y += cbfs.c -romstage-$(CONFIG_COMPRESS_RAMSTAGE) += lzma.c lzmadecode.c +romstage-$(CONFIG_COMPRESS_RAMSTAGE_LZMA) += lzma.c lzmadecode.c romstage-y += libgcc.c romstage-y += memrange.c romstage-$(CONFIG_PRIMITIVE_MEMTEST) += primitive_memtest.c @@ -294,7 +294,7 @@ postcar-y += fmap.c postcar-y += gcc.c postcar-y += halt.c postcar-y += libgcc.c -postcar-$(CONFIG_COMPRESS_RAMSTAGE) += lzma.c lzmadecode.c +postcar-$(CONFIG_COMPRESS_RAMSTAGE_LZMA) += lzma.c lzmadecode.c postcar-y += memchr.c postcar-y += memcmp.c postcar-y += prog_loaders.c diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c index d2829d1d3e..0b2d66b33a 100644 --- a/src/lib/cbfs.c +++ b/src/lib/cbfs.c @@ -142,7 +142,7 @@ static inline bool cbfs_lzma_enabled(void) return false; if (ENV_ROMSTAGE && CONFIG(POSTCAR_STAGE)) return false; - if ((ENV_ROMSTAGE || ENV_POSTCAR) && !CONFIG(COMPRESS_RAMSTAGE)) + if ((ENV_ROMSTAGE || ENV_POSTCAR) && !CONFIG(COMPRESS_RAMSTAGE_LZMA)) return false; if (ENV_SMM) return false; |