kbuild: add support for zstd compressed modules
authorPiotr Gorski <lucjan.lucjanov@gmail.com>
Wed, 7 Apr 2021 16:09:27 +0000 (18:09 +0200)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 24 Apr 2021 20:25:06 +0000 (05:25 +0900)
kmod 28 supports modules compressed in zstd format so let's add this
possibility to kernel.

Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
Reviewed-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
init/Kconfig
scripts/Makefile.modinst

index 510f6fcd9b7fc31a09feca234180bcb862883681..b5744d32c4df30f032a860ba86d02be8c251335c 100644 (file)
@@ -2242,7 +2242,7 @@ choice
 
          Please note that the tool used to load modules needs to support the
          corresponding algorithm. module-init-tools MAY support gzip, and kmod
-         MAY support gzip and xz.
+         MAY support gzip, xz and zstd.
 
          Your build system needs to provide the appropriate compression tool
          to compress the modules.
@@ -2267,6 +2267,12 @@ config MODULE_COMPRESS_XZ
          Compress modules with XZ. The installed modules are suffixed
          with .ko.xz.
 
+config MODULE_COMPRESS_ZSTD
+       bool "ZSTD"
+       help
+         Compress modules with ZSTD. The installed modules are suffixed
+         with .ko.zst.
+
 endchoice
 
 config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
index 191408f7a91ade97d324aa66100034fe58f9fc2d..ff9b09e4cfca0c989bad14ca3002c352277a48b6 100644 (file)
@@ -21,6 +21,7 @@ endif
 suffix-y                               :=
 suffix-$(CONFIG_MODULE_COMPRESS_GZIP)  := .gz
 suffix-$(CONFIG_MODULE_COMPRESS_XZ)    := .xz
+suffix-$(CONFIG_MODULE_COMPRESS_ZSTD)  := .zst
 
 modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
 
@@ -95,6 +96,8 @@ quiet_cmd_gzip = GZIP    $@
       cmd_gzip = $(KGZIP) -n -f $<
 quiet_cmd_xz = XZ      $@
       cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
+quiet_cmd_zstd = ZSTD    $@
+      cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
 
 $(dst)/%.ko.gz: $(dst)/%.ko FORCE
        $(call cmd,gzip)
@@ -102,6 +105,9 @@ $(dst)/%.ko.gz: $(dst)/%.ko FORCE
 $(dst)/%.ko.xz: $(dst)/%.ko FORCE
        $(call cmd,xz)
 
+$(dst)/%.ko.zst: $(dst)/%.ko FORCE
+       $(call cmd,zstd)
+
 PHONY += FORCE
 FORCE: