summarylogtreecommitdiffstats
path: root/0003-init-add-support-for-zstd-compressed-kernel.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-init-add-support-for-zstd-compressed-kernel.patch')
-rw-r--r--0003-init-add-support-for-zstd-compressed-kernel.patch115
1 files changed, 0 insertions, 115 deletions
diff --git a/0003-init-add-support-for-zstd-compressed-kernel.patch b/0003-init-add-support-for-zstd-compressed-kernel.patch
deleted file mode 100644
index 4152c1a99ba2..000000000000
--- a/0003-init-add-support-for-zstd-compressed-kernel.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From dac027e09a0ee16d8425d25df2e2fa4dce52fc08 Mon Sep 17 00:00:00 2001
-From: Nick Terrell <terrelln@fb.com>
-Date: Thu, 20 Jun 2019 15:15:08 -0700
-Subject: [PATCH 3/7] init: add support for zstd compressed kernel
-
-* Adds the zstd and zstd22 cmds to scripts/Makefile.lib
-* Adds the HAVE_KERNEL_ZSTD and KERNEL_ZSTD options
-
-Architecture specific support is still needed for decompression.
-
-Reviewed-by: Kees Cook <keescook@chromium.org>
-Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
-Signed-off-by: Nick Terrell <terrelln@fb.com>
----
- Makefile | 3 ++-
- init/Kconfig | 15 ++++++++++++++-
- scripts/Makefile.lib | 22 ++++++++++++++++++++++
- 3 files changed, 38 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 8f7de0104799..38acd65aa651 100644
---- a/Makefile
-+++ b/Makefile
-@@ -464,6 +464,7 @@ KLZOP = lzop
- LZMA = lzma
- LZ4 = lz4c
- XZ = xz
-+ZSTD = zstd
-
- CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
- -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF)
-@@ -512,7 +513,7 @@ CLANG_FLAGS :=
- export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
- export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF PAHOLE LEX YACC AWK INSTALLKERNEL
- export PERL PYTHON PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
--export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ
-+export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
- export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
-
- export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
-diff --git a/init/Kconfig b/init/Kconfig
-index 078a0b73effd..11b67bc74e58 100644
---- a/init/Kconfig
-+++ b/init/Kconfig
-@@ -191,13 +191,16 @@ config HAVE_KERNEL_LZO
- config HAVE_KERNEL_LZ4
- bool
-
-+config HAVE_KERNEL_ZSTD
-+ bool
-+
- config HAVE_KERNEL_UNCOMPRESSED
- bool
-
- choice
- prompt "Kernel compression mode"
- default KERNEL_GZIP
-- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_UNCOMPRESSED
-+ depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_ZSTD || HAVE_KERNEL_UNCOMPRESSED
- help
- The linux kernel is a kind of self-extracting executable.
- Several compression algorithms are available, which differ
-@@ -276,6 +279,16 @@ config KERNEL_LZ4
- is about 8% bigger than LZO. But the decompression speed is
- faster than LZO.
-
-+config KERNEL_ZSTD
-+ bool "ZSTD"
-+ depends on HAVE_KERNEL_ZSTD
-+ help
-+ ZSTD is a compression algorithm targeting intermediate compression
-+ with fast decompression speed. It will compress better than GZIP and
-+ decompress around the same speed as LZO, but slower than LZ4. You
-+ will need at least 192 KB RAM or more for booting. The zstd command
-+ line tools is required for compression.
-+
- config KERNEL_UNCOMPRESSED
- bool "None"
- depends on HAVE_KERNEL_UNCOMPRESSED
-diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
-index 916b2f7f7098..54f7b7eb580b 100644
---- a/scripts/Makefile.lib
-+++ b/scripts/Makefile.lib
-@@ -413,6 +413,28 @@ quiet_cmd_xzkern = XZKERN $@
- quiet_cmd_xzmisc = XZMISC $@
- cmd_xzmisc = cat $(real-prereqs) | $(XZ) --check=crc32 --lzma2=dict=1MiB > $@
-
-+# ZSTD
-+# ---------------------------------------------------------------------------
-+# Appends the uncompressed size of the data using size_append. The .zst
-+# format has the size information available at the beginning of the file too,
-+# but it's in a more complex format and it's good to avoid changing the part
-+# of the boot code that reads the uncompressed size.
-+#
-+# Note that the bytes added by size_append will make the zstd tool think that
-+# the file is corrupt. This is expected.
-+#
-+# zstd uses a maximum window size of 8 MB. zstd22 uses a maximum window size of
-+# 128 MB. zstd22 is used for kernel compression because it is decompressed in a
-+# single pass, so zstd doesn't need to allocate a window buffer. When streaming
-+# decompression is used, like initramfs decompression, zstd22 should likely not
-+# 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); } > $@
-+
-+quiet_cmd_zstd22 = ZSTD22 $@
-+ cmd_zstd22 = { cat $(real-prereqs) | $(ZSTD) -22 --ultra; $(size_append); } > $@
-+
- # ASM offsets
- # ---------------------------------------------------------------------------
-
---
-2.28.0
-