Kconfig: Add option to compress ramstage with LZ4
When ramstage is loaded asynchronously, as on the skyrim boards, the faster decompression of LZ4 allows for faster boot times than the tighter compression of LZMA. To make this change, the name of the existing ramstage_compression option needs to be updated. BUG=b:264409477 TEST=Boot skyrim, look at boot speed Signed-off-by: Martin Roth <martin.roth@amd.corp-partner.google.com> Change-Id: I27dd1a8def024e0efd466cef9ffd9ca71717486a Reviewed-on: https://review.coreboot.org/c/coreboot/+/71673 Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
c08585674a
commit
40729a58ea
|
@ -372,9 +372,12 @@ cbfs-files-handler= \
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# a variety of flags for our build
|
# a variety of flags for our build
|
||||||
CBFS_COMPRESS_FLAG:=none
|
CBFS_COMPRESS_FLAG:=none
|
||||||
ifeq ($(CONFIG_COMPRESS_RAMSTAGE),y)
|
ifeq ($(CONFIG_COMPRESS_RAMSTAGE_LZMA),y)
|
||||||
CBFS_COMPRESS_FLAG:=LZMA
|
CBFS_COMPRESS_FLAG:=LZMA
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CONFIG_COMPRESS_RAMSTAGE_LZ4),y)
|
||||||
|
CBFS_COMPRESS_FLAG:=LZ4
|
||||||
|
endif
|
||||||
|
|
||||||
CBFS_PAYLOAD_COMPRESS_FLAG:=none
|
CBFS_PAYLOAD_COMPRESS_FLAG:=none
|
||||||
ifeq ($(CONFIG_COMPRESSED_PAYLOAD_LZMA),y)
|
ifeq ($(CONFIG_COMPRESSED_PAYLOAD_LZMA),y)
|
||||||
|
|
37
src/Kconfig
37
src/Kconfig
|
@ -170,12 +170,36 @@ config STATIC_OPTION_TABLE
|
||||||
every boot. Use this if you want the NVRAM configuration to
|
every boot. Use this if you want the NVRAM configuration to
|
||||||
never be modified from its default values.
|
never be modified from its default values.
|
||||||
|
|
||||||
config COMPRESS_RAMSTAGE
|
config MB_COMPRESS_RAMSTAGE_LZ4
|
||||||
bool "Compress ramstage with LZMA"
|
bool
|
||||||
depends on HAVE_RAMSTAGE
|
|
||||||
# Default value set at the end of the file
|
|
||||||
help
|
help
|
||||||
Compress ramstage to save memory in the flash image.
|
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"
|
||||||
|
help
|
||||||
|
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
|
config COMPRESS_PRERAM_STAGES
|
||||||
bool "Compress romstage and verstage with LZ4"
|
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
|
# 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
|
# option to be displayed in the general menu, but the default to be loaded in
|
||||||
# the mainboard if desired.
|
# the mainboard if desired.
|
||||||
config COMPRESS_RAMSTAGE
|
|
||||||
default y if !UNCOMPRESSED_RAMSTAGE
|
|
||||||
|
|
||||||
config COMPRESS_PRERAM_STAGES
|
config COMPRESS_PRERAM_STAGES
|
||||||
depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
|
depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -95,7 +95,7 @@ $(foreach arch,$(ARCH_SUPPORTED),\
|
||||||
romstage-y += fmap.c
|
romstage-y += fmap.c
|
||||||
romstage-y += delay.c
|
romstage-y += delay.c
|
||||||
romstage-y += cbfs.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 += libgcc.c
|
||||||
romstage-y += memrange.c
|
romstage-y += memrange.c
|
||||||
romstage-$(CONFIG_PRIMITIVE_MEMTEST) += primitive_memtest.c
|
romstage-$(CONFIG_PRIMITIVE_MEMTEST) += primitive_memtest.c
|
||||||
|
@ -294,7 +294,7 @@ postcar-y += fmap.c
|
||||||
postcar-y += gcc.c
|
postcar-y += gcc.c
|
||||||
postcar-y += halt.c
|
postcar-y += halt.c
|
||||||
postcar-y += libgcc.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 += memchr.c
|
||||||
postcar-y += memcmp.c
|
postcar-y += memcmp.c
|
||||||
postcar-y += prog_loaders.c
|
postcar-y += prog_loaders.c
|
||||||
|
|
|
@ -142,7 +142,7 @@ static inline bool cbfs_lzma_enabled(void)
|
||||||
return false;
|
return false;
|
||||||
if (ENV_ROMSTAGE && CONFIG(POSTCAR_STAGE))
|
if (ENV_ROMSTAGE && CONFIG(POSTCAR_STAGE))
|
||||||
return false;
|
return false;
|
||||||
if ((ENV_ROMSTAGE || ENV_POSTCAR) && !CONFIG(COMPRESS_RAMSTAGE))
|
if ((ENV_ROMSTAGE || ENV_POSTCAR) && !CONFIG(COMPRESS_RAMSTAGE_LZMA))
|
||||||
return false;
|
return false;
|
||||||
if (ENV_SMM)
|
if (ENV_SMM)
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue