@@ -130,8 +130,13 @@ $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzo)
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lz4)
+ifdef CONFIG_KERNEL_ZSTD_ULTRA
$(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
$(call if_changed,zstd22)
+else
+$(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
+ $(call if_changed,zstd)
+endif
suffix-$(CONFIG_KERNEL_GZIP) := gz
suffix-$(CONFIG_KERNEL_BZIP2) := bz2
@@ -321,6 +321,25 @@ config KERNEL_UNCOMPRESSED
endchoice
+menu "ZSTD compression options"
+ depends on KERNEL_ZSTD
+
+config KERNEL_ZSTD_LEVEL
+ int "Compression level (1-19)"
+ range 1 19
+ default 19
+ help
+ Choose a compression level for zstd kernel compression.
+ Default is 19.
+
+config KERNEL_ZSTD_LEVEL_ULTRA
+ bool "Ultra compression"
+ help
+ Selecting this overrides the chosen compression level and enables
+ the highest possible compression level for zstd (ultra-22).
+
+endmenu
+
config DEFAULT_INIT
string "Default init path"
default ""
@@ -455,10 +455,10 @@ quiet_cmd_xzmisc = XZMISC $@
# be used because it would require zstd to allocate a 128 MB buffer.
quiet_cmd_zstd = ZSTD $@
- cmd_zstd = { cat $(real-prereqs) | $(ZSTD) -19; $(size_append); } > $@
+ cmd_zstd = { cat $(real-prereqs) | $(ZSTD) -$(CONFIG_KERNEL_ZSTD_LEVEL) -T0; $(size_append); } > $@
quiet_cmd_zstd22 = ZSTD22 $@
- cmd_zstd22 = { cat $(real-prereqs) | $(ZSTD) -22 --ultra; $(size_append); } > $@
+ cmd_zstd22 = { cat $(real-prereqs) | $(ZSTD) -22 --ultra -T0; $(size_append); } > $@
# ASM offsets
# ---------------------------------------------------------------------------
In a similar way to the first patch in this series, add another Kconfig option that allows setting the zstd compression level for the kernel as well. This enables users to choose either a compression level between 1 and 19, or instead use the highest possible level (ultra-22). Also add '-T0' parameter in both cases. Signed-off-by: Tor Vic <torvic9@mailbox.org> --- arch/x86/boot/compressed/Makefile | 5 +++++ init/Kconfig | 19 +++++++++++++++++++ scripts/Makefile.lib | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-)