| From: Lasse Collin <lasse.collin@tukaani.org> |
| Subject: riscv: boot: add Image.xz support |
| Date: Sun, 21 Jul 2024 16:36:31 +0300 |
| |
| 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 | 1 + |
| arch/riscv/Makefile | 6 ++++-- |
| arch/riscv/boot/Makefile | 3 +++ |
| 3 files changed, 8 insertions(+), 2 deletions(-) |
| |
| --- a/arch/riscv/boot/Makefile~riscv-boot-add-imagexz-support |
| +++ a/arch/riscv/boot/Makefile |
| @@ -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) |
| |
| --- a/arch/riscv/Kconfig~riscv-boot-add-imagexz-support |
| +++ a/arch/riscv/Kconfig |
| @@ -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 |
| --- a/arch/riscv/Makefile~riscv-boot-add-imagexz-support |
| +++ a/arch/riscv/Makefile |
| @@ -159,6 +159,7 @@ boot-image-$(CONFIG_KERNEL_LZ4) := Imag |
| 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)' |
| _ |