From nobody Fri Dec 26 13:14:24 2025 Received: from mail-yw1-f175.google.com (mail-yw1-f175.google.com [209.85.128.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C20120B18; Fri, 5 Jan 2024 06:11:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="X/HV0Tu1" Received: by mail-yw1-f175.google.com with SMTP id 00721157ae682-5f0629e67f4so13210907b3.3; Thu, 04 Jan 2024 22:11:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704435062; x=1705039862; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q/8wADJCHmKaP0nscCPSIHPeX/XbN8JppbCl8vTI+Hc=; b=X/HV0Tu1DNS7VgOpfFEywHBHAA9Y2gFgi8t/Cl5CjPZkPAuAYCW0smHDHgsdVwRB26 r6NT183UcS8C7fvrI1Q+RB5v1z0XPMxuE8L8PXW96P9KlW51CPSBXZB7TxQMIyhu3u/N z2rD0y/MajC6jOyzaNkJvEpd1Yz7ak47+WmZmSz5tGKdcvt3H4U+k8wgZzyucj6552gU W7V7KGEA7VS688EsKgtrbSLJA5nqsN/NGspaT3RlXmbuRV2tTsbi7ALRu8vTpa4tusBq P1uhRNHyf0e4qwHJQose+i0t5EHcaeH92EvVVDiXY+tkRNd4df1cC7M5Ky5N1pjZ9lgH 30XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704435062; x=1705039862; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q/8wADJCHmKaP0nscCPSIHPeX/XbN8JppbCl8vTI+Hc=; b=SKnKrlq3PDXyhW2Fn+c9+X4Ow1rTkMo7yjrNpb+nna17tAAIWRkJu+SkkSHypnGkDl lKRbEXVwHwrq07bkmAvQnO1YH7WHyW2oyfWGeChEhwNUNVm/k6CEQRuHQ+UfClAhU7oR kf056slPZBXLSsbEvGVKZeATe9rw2KDEWHzWf3NUpt6bvYKlVotu+suo1DRJozUaWL2L qV8Us0+znM4U819bLDcD6tUHL6oa8jhCi1UbLpsmMtFiUEUL4RYzlXt4YdlKQHskSBCu aUd9K818OGW/tX0w3iPmVukSesc53WCJJuxPjhNMcewlTlhEUQBa4yAy/pXv8llzJyIo f5zg== X-Gm-Message-State: AOJu0YwTxAdCh8uNwYjHO1CSVsSeEg7FNhlqpUJhIMyl9vDWjj6id9QP mZNbokkcXxKWuAf/pci1ljm+7gZy8vWkFg== X-Google-Smtp-Source: AGHT+IFQ/pOTdieaV63j+OiSy0l8zP9+yVfQTdlRrZJJGPYwkChwOgfSJTbgrxOQTqFKKIRf1Q25jQ== X-Received: by 2002:a0d:d145:0:b0:5e7:6526:91da with SMTP id t66-20020a0dd145000000b005e7652691damr1766599ywd.23.1704435062364; Thu, 04 Jan 2024 22:11:02 -0800 (PST) Received: from localhost ([185.215.181.31]) by smtp.gmail.com with ESMTPSA id q1-20020a0dce01000000b005f134299392sm409764ywd.52.2024.01.04.22.11.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 22:11:02 -0800 (PST) From: Kevin Martin To: Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , Nicolas Schier , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Kevin Martin Subject: [PATCH v2 1/2] kbuild: Enable decompression for use by EXTRA_FIRMWARE Date: Fri, 5 Jan 2024 01:10:01 -0500 Message-ID: <941a566eb114701685dc44f708f81891b3bd085b.1704353568.git.kevinmbecause@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The build system can currently only compress files. This patch adds the functionality to decompress files. Decompression is needed for building firmware files into the kernel if those files are compressed on the filesystem. Compressed firmware files are in use by Gentoo, Fedora, Arch, and others. Signed-off-by: Kevin Martin Acked-by: Masahiro Yamada --- Changes in v2: - Skipped running 'cat' and now just pass the file names directly. - Added '--quiet' since 'zstd' started printing the status of each file now that it knows the file names. scripts/Makefile.lib | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 1a965fe68..d043be3dc 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -523,6 +523,9 @@ quiet_cmd_xzkern_with_size =3D XZKERN $@ quiet_cmd_xzmisc =3D XZMISC $@ cmd_xzmisc =3D cat $(real-prereqs) | $(XZ) --check=3Dcrc32 --lzma2= =3Ddict=3D1MiB > $@ =20 +quiet_cmd_xzdec =3D XZDEC $@ + cmd_xzdec =3D $(XZ) --decompress --stdout $< > $@ + # ZSTD # ------------------------------------------------------------------------= --- # Appends the uncompressed size of the data using size_append. The .zst @@ -548,6 +551,9 @@ quiet_cmd_zstd22 =3D ZSTD22 $@ quiet_cmd_zstd22_with_size =3D ZSTD22 $@ cmd_zstd22_with_size =3D { cat $(real-prereqs) | $(ZSTD) -22 --ultra= ; $(size_append); } > $@ =20 +quiet_cmd_zstddec =3D ZSTDDEC $@ + cmd_zstddec =3D $(ZSTD) --decompress --force --quiet -o $@ $< + # ASM offsets # ------------------------------------------------------------------------= --- =20 --=20 2.41.0 From nobody Fri Dec 26 13:14:24 2025 Received: from mail-yw1-f171.google.com (mail-yw1-f171.google.com [209.85.128.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 854551DFC5 for ; Fri, 5 Jan 2024 06:11:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="azYitYZN" Received: by mail-yw1-f171.google.com with SMTP id 00721157ae682-5f2d44a6842so12081627b3.1 for ; Thu, 04 Jan 2024 22:11:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704435099; x=1705039899; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GKDQ+5pnW68Nbi3B0uL1FG88vOkGBEVvuvzp5rUCPBU=; b=azYitYZN/P4YqYK+vjsl94vwoWWq9Itoc4/MaxN6TizaL73XGLXpS1oRrxHMab+3Mv 6r39l5F4IdIAzNCkkGtIV0WjZHhzdWjRJS6RNLEduXJKFPeGVI4oSh3J/m3W0bW/jQEw uRLc/Uj7aELla0ENAb0C+ZSOdsDwSaASOyAagu1g1woxK57mmR8+OYGoCP8Bvrtn3xCr 1nCoQoAn6OCV7OtlOTuKqao8Fpj2XVPsMYcr0F7jbW2DeHILcl1WhNl8dvbqDyzwc/OZ I+1p1sX2N8gI6msuvWBj+QmoPrHw1nLYYP1AKc8gPQcJSrYxWQ5zWuM/DBHl3RX1t4z3 KQMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704435099; x=1705039899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GKDQ+5pnW68Nbi3B0uL1FG88vOkGBEVvuvzp5rUCPBU=; b=naaeRWsgu6uw0UeU1AdBXRYawadwvQajsM7sDG/7F+/x9VsjGNqfapCpcXcMGZz65u o2pMPWpn28H3f9ng7o/23wa3PVyjxGvnezFBdqmembWh8t2AzOe0jmCoowhp05STBsep xUuXQfkM7Ai/8gaHQo96iUd5/JEGGdqOYf8SXpkAYHAg8u1NchcwL0CONkM57lYWoehE aPAO4TB3Wx5GHCEppRzA6Bic9v7WV8U2UWm6S+dRhrQvTGDJUOebyTlR4ydI21XIHjeN XDsJ/vgTniJK6V2cqLQ6P2EZc9+8ka/ks2anEBDW1fwqpWbT2+1vbGaEFv58XCZ20q9l j+YQ== X-Gm-Message-State: AOJu0YzG8pzA1bbnpB3kSpg0/WFEyjTG4FYvgcN04BD5OeitAhRw06yB 3jfIV5C5T5l8j7JpjSQGkik= X-Google-Smtp-Source: AGHT+IGXjI7ARK/zF18CPRzdfa7R/9+ll3ePFJmEzHKpOD0J1ujIZANn5sTiFN5ovJskj1Es16K0Zg== X-Received: by 2002:a81:5456:0:b0:5e8:45c5:a6bf with SMTP id i83-20020a815456000000b005e845c5a6bfmr1648912ywb.32.1704435099542; Thu, 04 Jan 2024 22:11:39 -0800 (PST) Received: from localhost ([185.215.181.31]) by smtp.gmail.com with ESMTPSA id w67-20020a816246000000b005ee92416510sm415589ywb.43.2024.01.04.22.11.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 22:11:39 -0800 (PST) From: Kevin Martin To: Luis Chamberlain , Russ Weight , Greg Kroah-Hartman , "Rafael J. Wysocki" , Masahiro Yamada , Nicolas Schier , linux-kernel@vger.kernel.org Cc: Kevin Martin Subject: [PATCH v2 2/2] firmware_loader: Enable compressed files with EXTRA_FIRMWARE Date: Fri, 5 Jan 2024 01:10:02 -0500 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The linux-firmware packages on Gentoo, Fedora, Arch, and others compress the firmware files. This works well with CONFIG_FW_LOADER_COMPRESS but does not work with CONFIG_EXTRA_FIRMWARE. This patch allows the build system to decompress firmware files specified by CONFIG_EXTRA_FIRMWARE. Uncompressed files are used first, then the compressed files are used. The patch works by copying or decompressing the specified firmware files into the build directory, then compiling them in from there. I would prefer to not copy any uncompressed files, but I have not found a clean way to do that. Signed-off-by: Kevin Martin --- Changes in v2: - Changed .gitignore to ignore all firmware files copied into the directory. - Fixed a tab. drivers/base/firmware_loader/Kconfig | 5 ++++- drivers/base/firmware_loader/builtin/.gitignore | 5 ++++- drivers/base/firmware_loader/builtin/Makefile | 16 ++++++++++++---- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_l= oader/Kconfig index 5ca00e02f..b7a908bff 100644 --- a/drivers/base/firmware_loader/Kconfig +++ b/drivers/base/firmware_loader/Kconfig @@ -76,7 +76,10 @@ config EXTRA_FIRMWARE image since it combines both GPL and non-GPL work. You should consult a lawyer of your own before distributing such an image. =20 - NOTE: Compressed files are not supported in EXTRA_FIRMWARE. + NOTE: Compressed files are supported by EXTRA_FIRMWARE. The build + system will look for uncompressed files first then fall back to + searching for compressed files in a similar way to + CONFIG_FW_LOADER_COMPRESS. =20 config EXTRA_FIRMWARE_DIR string "Firmware blobs root directory" diff --git a/drivers/base/firmware_loader/builtin/.gitignore b/drivers/base= /firmware_loader/builtin/.gitignore index 166f76b43..b3124ee78 100644 --- a/drivers/base/firmware_loader/builtin/.gitignore +++ b/drivers/base/firmware_loader/builtin/.gitignore @@ -1,2 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -*.gen.S +* +!.gitignore +!Makefile +!main.c diff --git a/drivers/base/firmware_loader/builtin/Makefile b/drivers/base/f= irmware_loader/builtin/Makefile index 6c067dedc..cc60eb441 100644 --- a/drivers/base/firmware_loader/builtin/Makefile +++ b/drivers/base/firmware_loader/builtin/Makefile @@ -20,7 +20,7 @@ filechk_fwbin =3D \ echo " .section .rodata" ;\ echo " .p2align 4" ;\ echo "_fw_$(FWSTR)_bin:" ;\ - echo " .incbin \"$(fwdir)/$(FWNAME)\"" ;\ + echo " .incbin \"$(obj)/$(FWNAME)\"" ;\ echo "_fw_end:" ;\ echo " .section .rodata.str,\"aMS\",$(PROGBITS),1" ;\ echo " .p2align $(ASM_ALIGN)" ;\ @@ -36,7 +36,15 @@ $(obj)/%.gen.S: FORCE $(call filechk,fwbin) =20 # The .o files depend on the binaries directly; the .S files don't. -$(addprefix $(obj)/, $(firmware)): $(obj)/%.gen.o: $(fwdir)/% +$(addprefix $(obj)/, $(firmware)): $(obj)/%.gen.o: $(obj)/% =20 -targets :=3D $(patsubst $(obj)/%,%, \ - $(shell find $(obj) -name \*.gen.S 2>/dev/= null)) +$(obj)/% : $(fwdir)/% FORCE + $(call if_changed,copy) + +$(obj)/% : $(fwdir)/%.xz FORCE + $(call if_changed,xzdec) + +$(obj)/% : $(fwdir)/%.zst FORCE + $(call if_changed,zstddec) + +targets :=3D $(patsubst %.gen.o, %.gen.S, $(firmware)) $(CONFIG_EXTRA_FIRM= WARE) --=20 2.41.0