Attention is currently required from: Martin Roth.
Hello Martin Roth,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/71673
to review the following change.
Change subject: Kconfig: Add option to compress ramstage with LZ4 ......................................................................
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 --- M Makefile.inc M src/Kconfig M src/lib/Makefile.inc M src/lib/cbfs.c 4 files changed, 46 insertions(+), 10 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/73/71673/1
diff --git a/Makefile.inc b/Makefile.inc index 5cd13ba..2b5d742 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -372,9 +372,12 @@ ####################################################################### # 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 f16b53c..ed9dba8 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -170,12 +170,28 @@ 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 + +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 + Compress ramstage with LZ4 for faster decompression + +endchoice
config COMPRESS_PRERAM_STAGES bool "Compress romstage and verstage with LZ4" @@ -1372,9 +1388,6 @@ # 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 dcba0c6..030959c 100644 --- a/src/lib/Makefile.inc +++ b/src/lib/Makefile.inc @@ -95,7 +95,7 @@ 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 += 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 d2829d1..0b2d66b 100644 --- a/src/lib/cbfs.c +++ b/src/lib/cbfs.c @@ -142,7 +142,7 @@ 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;