From nobody Sat Dec 27 11:08:54 2025 Received: from mail-yw1-f174.google.com (mail-yw1-f174.google.com [209.85.128.174]) (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 490D22031F; Wed, 20 Dec 2023 10:26:56 +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="eNQmNImu" Received: by mail-yw1-f174.google.com with SMTP id 00721157ae682-5e76948cda7so19978727b3.3; Wed, 20 Dec 2023 02:26:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703068015; x=1703672815; 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=8G9gIUzWq3S9DwN1F69m6K2FJSCQp0rMkcWT18Ovi08=; b=eNQmNImu26BPPuBy/6X19L7Xisfn+azCSQHpzTUjJXh07vZMx38bF4uEYCiUuNBbKl Ga0YSuptMrTKMNbiCdIVZp2cWQj+vWX54UxXNIcXchUlraQNC45R4J9FHa7h/POa3QhE Vls2SAvJzlecr9SdmF8HGwczSP4ScUHDm6SS76yWZmslIVU0I8UHKeplrouz4m+/bekh 5Aaaj13FcnSBIam9h2/etYD7H+a1EkPBZZRH3d9UUoxlVjyxd7F1aLl/+oiFw8lZtA3C f/CcYpjldIl5/DfIo6axfGbWAKBeN4TjG7AeIjcZqbsi6ffqEvT2pAPx9xQTyFyJPf6K YFMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703068015; x=1703672815; 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=8G9gIUzWq3S9DwN1F69m6K2FJSCQp0rMkcWT18Ovi08=; b=AcCMQoQA7catzKdwoKn4i0KJqAwyDt+51twcjPWNfJMrsZWHVH1YKhfYueFYz7O9o5 KA9qjkYRruxQjaSvnlHY2QJnOZ+qxRt/ogA1hdbIjIxxZhOXRVdHA27pS0DqQYE2QI4v TxFOu+TjeJJ/cIU2JV/HDqrCkpogLz7pXzOg27Yi/HGNZxqroPLz29h7g+/fmxsV/VPH BbQz/HkXpepRSbsisjf6DgEFqIJYJvoGALnTAm5ehOQi+eoU//wXcryrQRucZzwhCctR /3LIfYDheWh5LjJfr4fESRgi5xsTiMVsyY8vTlZ+CrDKfPWYZ5boHSPWdI8BGCgc7x8b sm0A== X-Gm-Message-State: AOJu0YxwnnbGISeRbe/l9LdG9u4PNUAtDJ7XYqNtAa3g6hMe+DWP/uAO /DFVuS/PQ1Z0pVjgigCN+pY= X-Google-Smtp-Source: AGHT+IE5kuECq0tf9IoykfQ1vj1ZjrW3n5l/zY4+sxIrvh7b/PxjVBv3CE9zlOGzTuUDQnzNpQG9wQ== X-Received: by 2002:a05:6902:534:b0:db7:dacf:ed96 with SMTP id y20-20020a056902053400b00db7dacfed96mr11216655ybs.119.1703068014962; Wed, 20 Dec 2023 02:26:54 -0800 (PST) Received: from localhost ([185.215.181.26]) by smtp.gmail.com with ESMTPSA id w6-20020a25ef46000000b00db5380fc1absm1322769ybm.19.2023.12.20.02.26.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 02:26:54 -0800 (PST) From: Kevin Martin To: joeyzerocrash@protonmail.com, Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , Nicolas Schier , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Kevin Martin Subject: [PATCH 1/2] kbuild: Enable decompression for use by EXTRA_FIRMWARE 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. Date: Wed, 20 Dec 2023 05:22:50 -0500 Message-ID: <941a566eb114701685dc44f708f81891b3bd085b.1703042082.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" Signed-off-by: Kevin Martin Tested-by: Nicolas Schier --- 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 cat $(real-prereqs) | $(XZ) --decompress > $@ + # 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 cat $(real-prereqs) | $(ZSTD) --decompress > $@ + # ASM offsets # ------------------------------------------------------------------------= --- =20 --=20 2.41.0 From nobody Sat Dec 27 11:08:54 2025 Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com [209.85.219.179]) (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 3665920B04 for ; Wed, 20 Dec 2023 10:33:15 +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="mDa17dwM" Received: by mail-yb1-f179.google.com with SMTP id 3f1490d57ef6-da7ea62e76cso4646139276.3 for ; Wed, 20 Dec 2023 02:33:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703068395; x=1703673195; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7qtNcAO0ppjHzZIU/hLis0rkAchUbEqDdoUufrmlDX0=; b=mDa17dwMLTzXf77SHxXF9lgsZws9smAt1eOg5Ns607VYvwVwZ+4XMHf0iBcGRHUyvq Lveo7h/fVsOQiqo0djpoblWhY82lSyTGybrYCzNjUgEIXmLNbh66lek4locd3uPGJWLe H0Y1eHP5l4W71B3DTRmFVq5++a1+pB7o9mWet5XaudDT/ubjqxXR3rNO1afpmc7r0mOG dJ0MBDPt1QPpri4Owzb7tHwGL6/DxJ4eXdIuFXLqPgwjGVyW8RYV6jCXQYCz6nxFvenZ VKoO6++UcBhrZgdYFUXOHQiMOO5T2QGYLz9MY5xkXXiFdBdT6zyDXvH1wDVlnF5Ar02t l5rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703068395; x=1703673195; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7qtNcAO0ppjHzZIU/hLis0rkAchUbEqDdoUufrmlDX0=; b=M+PCiZB0y9ujKdFtTWpoMakPPVBc9+NrvFHXWoI7Bsk/9aG114mczhDyNUSbJMY/nF tASElb0+shRd1IOswdL/uFvXHMw2KPnZlqtFOaKPD+ffli4xSQ7Y5I3hxzL49vl5tkBk Rih7O5ueMdTZVtHBTcW5azFdHNzTZ1d5NjHWP7V5LYfwZpsR3/IU2slKBggHyTIixm/x wm1jeIeuLg5sDEaeuR9ghaMaRWzEds/Nwlc99OGdgUoU1X/JNRY4XjtBYQjUbM3BsN/x ykrx8mbMLQB/kh7Sou+JP+nb+X62uPaznNdCRG7FDUqvXIFuRzW+GLZbrfHHdrEOS3nx /5Mg== X-Gm-Message-State: AOJu0YwZ73p4XsyUz08DcYATDd9cVbSxDtoRyyC9uDVbDzBX7kJfbRV0 nS0MHnVH0omZaAMLTbwJ4bs= X-Google-Smtp-Source: AGHT+IGltqE3mhfDTpX2ZubomA1b4Gz5wqV0QU/3fPg57T0EDcXEp34TAlIlxzW1ghHYw+jsi8BlCw== X-Received: by 2002:a25:ab86:0:b0:dbd:4fae:cf79 with SMTP id v6-20020a25ab86000000b00dbd4faecf79mr1977544ybi.129.1703068395043; Wed, 20 Dec 2023 02:33:15 -0800 (PST) Received: from localhost ([185.215.181.26]) by smtp.gmail.com with ESMTPSA id t49-20020a25aab4000000b00dbd15c3b753sm345116ybi.46.2023.12.20.02.33.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 02:33:14 -0800 (PST) From: Kevin Martin To: kevinmbecause@gmail.com, Luis Chamberlain , Russ Weight , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org Subject: [PATCH 2/2] firmware_loader: Enable compressed files in EXTRA_FIRMWARE Date: Wed, 20 Dec 2023 05:29:33 -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. Signed-off-by: Kevin Martin Tested-by: Nicolas Schier --- drivers/base/firmware_loader/Kconfig | 5 ++++- drivers/base/firmware_loader/builtin/Makefile | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 5 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/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