mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-10-26 10:57:38 +08:00
Since commit48ebe1cbbe("kbuild: compress the kernel with pigz if available"), cmd_gzip runs pigz through scripts/jobserver-exec, which takes the job slots make has free. GNU Make passes the jobserver pipe only to recipes it treats as recursive, but leaves --jobserver-auth in MAKEFLAGS for all of them. The make 4.3 in CentOS Stream 9 also hides the pipe in sub-makes (a backport of the fix for GNU Make bug 58232), so jobserver-exec cannot open it, runs pigz on one thread, and prints: WARNING: Unable to reopen jobserver read-side pipe: FileNotFoundError(2, 'No such file or directory') Mark every recipe that can run cmd_gzip as recursive with "+", as commitecab4115c4("kbuild: mark `rustc` (and others) invocations as recursive") did for rustc. Besides the $(call if_changed,gzip) rules, this covers those that choose gzip through a variable: the built-in initramfs in usr/Makefile (which rcutorture's kvm.sh builds), the EFI zboot image, and the arm, csky, and mips compressed images. As with rustc, "make -n" now runs these recipes, including those that choose through a variable when they select another compressor. Also update the gzip entry in Documentation/kbuild/makefiles.rst, as suggested in review. Tested with GNU Make 4.3 plus CentOS Stream 9's make-4.3-cloexec.patch, GCC 16.2.0, and -j64, on ARCH=x86_64, arm64, and arm defconfig, and ARCH=x86_64 defconfig with a built-in initramfs: none of them prints the warning, and pigz gets the free job slots (-p 54, 64, and 50 for the kernel image). Without this change, the x86_64 builds print it for the kernel image and for the initramfs. Reported-by: Paul E. McKenney <paulmck@kernel.org> Closes: https://lore.kernel.org/all/0ddb5e5e-f801-444c-aa98-0cfe814a3026@paulmck-laptop/ Fixes:48ebe1cbbe("kbuild: compress the kernel with pigz if available") Assisted-by: LLM Reviewed-by: Nicolas Schier <n.schier@fritz.com> Acked-by: Lorenzo Stoakes (ARM) <ljs@kernel.org> Signed-off-by: Kees Cook <kees@kernel.org> Tested-by: Paul E. McKenney <paulmck@kernel.org> Link: https://patch.msgid.link/20261010081914.540611-1-kees@kernel.org Signed-off-by: Nathan Chancellor <nathan@kernel.org>
59 lines
1.5 KiB
Makefile
59 lines
1.5 KiB
Makefile
#
|
|
# arch/riscv/boot/Makefile
|
|
#
|
|
# This file is included by the global makefile so that you can add your own
|
|
# architecture-specific flags and dependencies.
|
|
#
|
|
# This file is subject to the terms and conditions of the GNU General Public
|
|
# License. See the file "COPYING" in the main directory of this archive
|
|
# for more details.
|
|
#
|
|
# Copyright (C) 2018, Anup Patel.
|
|
# Author: Anup Patel <anup@brainfault.org>
|
|
#
|
|
# Based on the ia64 and arm64 boot/Makefile.
|
|
#
|
|
|
|
OBJCOPYFLAGS_Image :=-O binary -R .note -R .note.gnu.build-id -R .comment -S
|
|
OBJCOPYFLAGS_loader.bin :=-O binary
|
|
|
|
targets := Image Image.* loader loader.o loader.lds loader.bin
|
|
|
|
$(obj)/Image: vmlinux FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
$(obj)/Image.gz: $(obj)/Image FORCE
|
|
+$(call if_changed,gzip)
|
|
|
|
$(obj)/loader.o: $(src)/loader.S $(obj)/Image
|
|
|
|
$(obj)/loader: $(obj)/loader.o $(obj)/Image $(obj)/loader.lds FORCE
|
|
$(Q)$(LD) -T $(obj)/loader.lds -o $@ $(obj)/loader.o
|
|
|
|
$(obj)/Image.bz2: $(obj)/Image FORCE
|
|
$(call if_changed,bzip2)
|
|
|
|
$(obj)/Image.lz4: $(obj)/Image FORCE
|
|
$(call if_changed,lz4)
|
|
|
|
$(obj)/Image.lzma: $(obj)/Image FORCE
|
|
$(call if_changed,lzma)
|
|
|
|
$(obj)/Image.lzo: $(obj)/Image FORCE
|
|
$(call if_changed,lzo)
|
|
|
|
$(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)
|
|
|
|
EFI_ZBOOT_PAYLOAD := Image
|
|
EFI_ZBOOT_BFD_TARGET := elf$(BITS)-littleriscv
|
|
EFI_ZBOOT_MACH_TYPE := RISCV$(BITS)
|
|
|
|
include $(srctree)/drivers/firmware/efi/libstub/Makefile.zboot
|