riscv: boot: add Image.xz support
authorLasse Collin <lasse.collin@tukaani.org>
Sun, 21 Jul 2024 13:36:31 +0000 (16:36 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 2 Sep 2024 03:43:27 +0000 (20:43 -0700)
The Image.* targets existed for other compressors already.  Bootloader
support is needed for decompression.

This is for CONFIG_EFI_ZBOOT=n. With CONFIG_EFI_ZBOOT=y, XZ was already
available.

Comparision with Linux 6.10 RV64GC tinyconfig (in KiB):

    1027 Image
     594 Image.gz
     541 Image.zst
     510 Image.lzma
     474 Image.xz

Link: https://lkml.kernel.org/r/20240721133633.47721-17-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org>
Reviewed-by: Emil Renner Berthing <emil.renner.berthing@canonical.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Jules Maselbas <jmaselbas@zdiv.net>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Joel Stanley <joel@jms.id.au>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Jubin Zhong <zhongjubin@huawei.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Rui Li <me@lirui.org>
Cc: Sam James <sam@gentoo.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
arch/riscv/Kconfig
arch/riscv/Makefile
arch/riscv/boot/Makefile

index 0f3cd7c3a4360529331d8dd0023c11460b957622..5a2cce767628d1d7cfed2d398d26020061e7b71c 100644 (file)
@@ -156,6 +156,7 @@ config RISCV
        select HAVE_KERNEL_LZO if !XIP_KERNEL && !EFI_ZBOOT
        select HAVE_KERNEL_UNCOMPRESSED if !XIP_KERNEL && !EFI_ZBOOT
        select HAVE_KERNEL_ZSTD if !XIP_KERNEL && !EFI_ZBOOT
+       select HAVE_KERNEL_XZ if !XIP_KERNEL && !EFI_ZBOOT
        select HAVE_KPROBES if !XIP_KERNEL
        select HAVE_KRETPROBES if !XIP_KERNEL
        # https://github.com/ClangBuiltLinux/linux/issues/1881
index 6fe682139d2e58dd11c4205a6c8a4cefd6905c4d..d469db9f46f426122a1d6a41861622171402763c 100644 (file)
@@ -159,6 +159,7 @@ boot-image-$(CONFIG_KERNEL_LZ4)             := Image.lz4
 boot-image-$(CONFIG_KERNEL_LZMA)       := Image.lzma
 boot-image-$(CONFIG_KERNEL_LZO)                := Image.lzo
 boot-image-$(CONFIG_KERNEL_ZSTD)       := Image.zst
+boot-image-$(CONFIG_KERNEL_XZ)         := Image.xz
 ifdef CONFIG_RISCV_M_MODE
 boot-image-$(CONFIG_ARCH_CANAAN)       := loader.bin
 endif
@@ -183,12 +184,12 @@ endif
 vdso-install-y                 += arch/riscv/kernel/vdso/vdso.so.dbg
 vdso-install-$(CONFIG_COMPAT)  += arch/riscv/kernel/compat_vdso/compat_vdso.so.dbg
 
-BOOT_TARGETS := Image Image.gz Image.bz2 Image.lz4 Image.lzma Image.lzo Image.zst loader loader.bin xipImage vmlinuz.efi
+BOOT_TARGETS := Image Image.gz Image.bz2 Image.lz4 Image.lzma Image.lzo Image.zst Image.xz loader loader.bin xipImage vmlinuz.efi
 
 all:   $(notdir $(KBUILD_IMAGE))
 
 loader.bin: loader
-Image.gz Image.bz2 Image.lz4 Image.lzma Image.lzo Image.zst loader xipImage vmlinuz.efi: Image
+Image.gz Image.bz2 Image.lz4 Image.lzma Image.lzo Image.zst Image.xz loader xipImage vmlinuz.efi: Image
 
 $(BOOT_TARGETS): vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
@@ -225,6 +226,7 @@ define archhelp
   echo  '  Image.lzma  - Compressed kernel image (arch/riscv/boot/Image.lzma)'
   echo  '  Image.lzo   - Compressed kernel image (arch/riscv/boot/Image.lzo)'
   echo  '  Image.zst   - Compressed kernel image (arch/riscv/boot/Image.zst)'
+  echo  '  Image.xz    - Compressed kernel image (arch/riscv/boot/Image.xz)'
   echo  '  vmlinuz.efi - Compressed EFI kernel image (arch/riscv/boot/vmlinuz.efi)'
   echo  '                Default when CONFIG_EFI_ZBOOT=y'
   echo  '  xipImage    - Execute-in-place kernel image (arch/riscv/boot/xipImage)'
index 4e9e7a28bf9b1dc33948dd3e4cb9894c47649f41..b25d524ce5eb436f17744e3fa61778e8c1391ea7 100644 (file)
@@ -64,6 +64,9 @@ $(obj)/Image.lzo: $(obj)/Image FORCE
 $(obj)/Image.zst: $(obj)/Image FORCE
        $(call if_changed,zstd)
 
+$(obj)/Image.xz: $(obj)/Image FORCE
+       $(call if_changed,xzkern)
+
 $(obj)/loader.bin: $(obj)/loader FORCE
        $(call if_changed,objcopy)