aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2018-02-07 13:01:43 +0100
committerMartin Roth <martinroth@google.com>2018-02-10 23:57:06 +0000
commit47dd96db9739a534eaf7df63a7d7b4b7cfc220c0 (patch)
tree6ccdefef10abcf2489adafdcd48815bb32097598
parent9be42b59537aa41b483d392e3e00eb3ed653080f (diff)
payloads: Add an option to compress secondary payloads
Both GRUB and SeaBIOS can chainload lzma compressed payloads. Therefore it is beneficial to compress secondary payloads like Memtest86+, coreinfo, nvramcui,... for both size reasons and often also speed reasons since the limiting factor is generally the IO of the boot device. Tested with SeaBIOS and memtest86+ master on Thinkpad X220. Change-Id: Iddfd6fcf4112d255cc7b2b49b99bf5ea4d6f8db4 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/23639 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin Roth <martinroth@google.com>
-rw-r--r--Makefile.inc5
-rw-r--r--payloads/Kconfig7
-rw-r--r--payloads/Makefile.inc2
-rw-r--r--payloads/external/Makefile.inc2
4 files changed, 16 insertions, 0 deletions
diff --git a/Makefile.inc b/Makefile.inc
index 0593d31f1f..379215b254 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -350,6 +350,11 @@ ifeq ($(CONFIG_COMPRESSED_PAYLOAD_LZ4),y)
CBFS_PAYLOAD_COMPRESS_FLAG:=LZ4
endif
+CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG:=none
+ifeq ($(CONFIG_COMPRESS_SECONDARY_PAYLOAD),y)
+CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG:=LZMA
+endif
+
CBFS_PRERAM_COMPRESS_FLAG:=none
ifeq ($(CONFIG_COMPRESS_PRERAM_STAGES),y)
CBFS_PRERAM_COMPRESS_FLAG:=LZ4
diff --git a/payloads/Kconfig b/payloads/Kconfig
index 125ca61ae4..2a329ac08f 100644
--- a/payloads/Kconfig
+++ b/payloads/Kconfig
@@ -82,6 +82,13 @@ config PAYLOAD_IS_FLAT_BINARY
Add the payload to cbfs as a flat binary type instead of as an
elf payload
+config COMPRESS_SECONDARY_PAYLOAD
+ bool "Use LZMA compression for secondary payloads"
+ default y
+ help
+ In order to reduce the size secondary payloads take up in the
+ ROM chip they can be compressed using the LZMA algorithm.
+
menu "Secondary Payloads"
config COREINFO_SECONDARY_PAYLOAD
diff --git a/payloads/Makefile.inc b/payloads/Makefile.inc
index b27d7fe23e..d894dec4a7 100644
--- a/payloads/Makefile.inc
+++ b/payloads/Makefile.inc
@@ -16,10 +16,12 @@
cbfs-files-$(CONFIG_COREINFO_SECONDARY_PAYLOAD) += img/coreinfo
img/coreinfo-file := payloads/coreinfo/build/coreinfo.elf
img/coreinfo-type := payload
+img/coreinfo-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
cbfs-files-$(CONFIG_NVRAMCUI_SECONDARY_PAYLOAD) += img/nvramcui
img/nvramcui-file := payloads/nvramcui/nvramcui.elf
img/nvramcui-type := payload
+img/nvramcui-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
PAYLOADS_LIST=\
payloads/coreinfo \
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index 62d8a440fa..ec7d9a83ba 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -185,12 +185,14 @@ payloads/external/tint/tint/tint.elf tint:
cbfs-files-$(CONFIG_TINT_SECONDARY_PAYLOAD) += img/tint
img/tint-file := payloads/external/tint/tint/tint.elf
img/tint-type := payload
+img/tint-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
# Memtest86+
cbfs-files-$(CONFIG_MEMTEST_SECONDARY_PAYLOAD) += img/memtest
img/memtest-file := payloads/external/Memtest86Plus/memtest86plus/memtest
img/memtest-type := payload
+img/memtest-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
ifeq ($(CONFIG_CONSOLE_SERIAL)$(CONFIG_DRIVERS_UART_8250IO),yy)
MEMTEST_SERIAL_OPTIONS=SERIAL_CONSOLE_DEFAULT=1 \