Re: [RFC PATCH] x86/boot: use zstd -19 if building for 32-bit

From: H. Peter Anvin

Date: Tue Jul 28 2026 - 12:32:26 EST


On July 28, 2026 7:31:35 AM PDT, Mingcong Bai <jeffbai@xxxxxxx> wrote:
>When using native build environments (that is, 32-bit x86 chroot/container
>as build environment for 32-bit x86 binaries), `zstd -22' requests more
>virtual memory than that could be allowed on 32-bit hosts.
>
>Introduce `cmd_zstd_with_size' for CONFIG_X86_32 builds.
>
>This is quite possibly just stupid... But there doesn't seem to be a way
>to detect the host environment. So I'm sending this patch as a means to
>ask for your opinions.
>
>Any help would be greated appreciated.
>
>Signed-off-by: Mingcong Bai <jeffbai@xxxxxxx>
>---
> arch/x86/boot/compressed/Makefile | 5 +++++
> scripts/Makefile.lib | 3 +++
> 2 files changed, 8 insertions(+)
>
>diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
>index 07e0e64b9a98..2261fb0d4d1d 100644
>--- a/arch/x86/boot/compressed/Makefile
>+++ b/arch/x86/boot/compressed/Makefile
>@@ -143,8 +143,13 @@ $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
> $(call if_changed,lzo_with_size)
> $(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
> $(call if_changed,lz4_with_size)
>+ifdef CONFIG_X86_32
>+$(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
>+ $(call if_changed,zstd_with_size)
>+else
> $(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
> $(call if_changed,zstd22_with_size)
>+endif
>
> suffix-$(CONFIG_KERNEL_GZIP) := gz
> suffix-$(CONFIG_KERNEL_BZIP2) := bz2
>diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
>index 0718e39cedda..09910dc57af3 100644
>--- a/scripts/Makefile.lib
>+++ b/scripts/Makefile.lib
>@@ -464,6 +464,9 @@ quiet_cmd_xzmisc = XZMISC $@
> quiet_cmd_zstd = ZSTD $@
> cmd_zstd = cat $(real-prereqs) | $(ZSTD) -19 > $@
>
>+quiet_cmd_zstd = ZSTD $@
>+ cmd_zstd_with_size = { cat $(real-prereqs) | $(ZSTD) -19; $(size_append); } > $@
>+
> quiet_cmd_zstd22 = ZSTD22 $@
> cmd_zstd22 = cat $(real-prereqs) | $(ZSTD) -22 --ultra > $@
>

This is really just stupid. Basing it on the config setting is just plain wrong.