Pull x86 boot updates from Ingo Molnar: "The main change in this cycle was to add support for ZSTD-compressed kernel and initrd images. ZSTD has a very fast decompressor, yet it compresses better than gzip" * tag 'x86-boot-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: Documentation: dontdiff: Add zstd compressed files .gitignore: Add ZSTD-compressed files x86: Add support for ZSTD compressed kernel x86: Bump ZO_z_extra_bytes margin for zstd usr: Add support for zstd compressed initramfs init: Add support for zstd compressed kernel lib: Add zstd support to decompress lib: Prepare zstd for preboot environment, improve performance
Showing the changes to scripts (1 of 21 files). Show all
Unified · Split
| @@ -413,6 +413,28 @@ quiet_cmd_xzkern = XZKERN $@ · 412 unmodified lines | ||
| 413 | 413 | quiet_cmd_xzmisc = XZMISC $@ |
| 414 | 414 | cmd_xzmisc = cat $(real-prereqs) | $(XZ) --check=crc32 --lzma2=dict=1MiB > $@ |
| 415 | 415 | |
| 416 | +# ZSTD | |
| 417 | +# --------------------------------------------------------------------------- | |
| 418 | +# Appends the uncompressed size of the data using size_append. The .zst | |
| 419 | +# format has the size information available at the beginning of the file too, | |
| 420 | +# but it's in a more complex format and it's good to avoid changing the part | |
| 421 | +# of the boot code that reads the uncompressed size. | |
| 422 | +# | |
| 423 | +# Note that the bytes added by size_append will make the zstd tool think that | |
| 424 | +# the file is corrupt. This is expected. | |
| 425 | +# | |
| 426 | +# zstd uses a maximum window size of 8 MB. zstd22 uses a maximum window size of | |
| 427 | +# 128 MB. zstd22 is used for kernel compression because it is decompressed in a | |
| 428 | +# single pass, so zstd doesn't need to allocate a window buffer. When streaming | |
| 429 | +# decompression is used, like initramfs decompression, zstd22 should likely not | |
| 430 | +# be used because it would require zstd to allocate a 128 MB buffer. | |
| 431 | + | |
| 432 | +quiet_cmd_zstd = ZSTD $@ | |
| 433 | + cmd_zstd = { cat $(real-prereqs) | $(ZSTD) -19; $(size_append); } > $@ | |
| 434 | + | |
| 435 | +quiet_cmd_zstd22 = ZSTD22 $@ | |
| 436 | + cmd_zstd22 = { cat $(real-prereqs) | $(ZSTD) -22 --ultra; $(size_append); } > $@ | |
| 437 | + | |
| 416 | 438 | # ASM offsets |
| 417 | 439 | # --------------------------------------------------------------------------- |
| 418 | 440 | |