Your message dated Sun, 28 Jul 2024 23:40:07 +0200 with message-id <40c689d05c319a4344b527b97b3d052bd6e4e30c.ca...@decadent.org.uk> and subject line Re: initramfs-tools: Please support compressed firmware (new in Linux 5.19) has caused the Debian Bug report #1019412, regarding initramfs-tools: Please support compressed firmware (new in Linux 5.19) to be marked as done.
This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact ow...@bugs.debian.org immediately.) -- 1019412: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1019412 Debian Bug Tracking System Contact ow...@bugs.debian.org with problems
--- Begin Message ---Source: initramfs-tools Version: 0.142 Severity: wishlist Tags: patch Dear Maintainer, Resubmitting MR 61 https://salsa.debian.org/kernel-team/initramfs-tools/-/merge_requests/61 to debbugs after 4 months. The patches, in order, do the following: 1. /sys/module/firmware_class/parameters/path, if any, is added before anything else in the module loading path: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/firmware_loader/main.c?h=v5.17#n406 2. When configured with FW_LOADER_COMPRESS, Linux additionally searches firmware with an .xz suffix and decompresses it in-kernel: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/firmware_loader/main.c?h=v5.17#n754 3. In 5.19, when configured with FW_LOADER_COMPRESS_ZSTD, Linux will additionally support ZSTD-compression with a .zst suffix: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?h=driver-core-next&id=23cfbc6ec44e5e80d5522976ff45ffcdcddfb230 The end-goal of this is that I'd like the firmware for which this is a gain to be installed compressed in Debian (firmware-amd-graphics firmware-iwlwifi firmware-linux-free, a common setup, is 19M of .deb, 159M on-disk, but just 51M when subjected to find fw.xz/ -type f -exec xz {} \; (61M zstd default, 55M zstd -19); on one machine with that + 283M of xilinx firmware the gain is 464M -> 87M (116M, 94M)). Best, наб -- System Information: Debian Release: 11.4 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.10.0-17-amd64 (SMP w/24 CPU threads) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_FIRMWARE_WORKAROUND, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabledFrom 5774cc330c144f31a5aec00e016395149e810bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= <nabijaczlew...@nabijaczleweli.xyz> Date: Tue, 26 Apr 2022 15:41:59 +0200 Subject: [PATCH 1/3] Respect fw_path_para in add_firmware() X-Mutt-PGP: OS /sys/module/firmware_class/parameters/path, if any, is added before anything else in the module loading path: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/firmware_loader/main.c?h=v5.17#n406 --- hook-functions | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hook-functions b/hook-functions index 95bd584..e9f09c0 100644 --- a/hook-functions +++ b/hook-functions @@ -28,7 +28,7 @@ force_load() } # Takes a file containing a list of modules to be added as an -# argument, figures out dependancies, and adds them. +# argument, figures out dependencies, and adds them. # # Input file syntax: # @@ -57,18 +57,23 @@ add_modules_from_file() # whether a warning should be printed in that case.) add_firmware() { - local firmware fwloc + local firmware fwloc fw_path_para path_firmware firmware="${1}" - if [ -e "${DESTDIR}/lib/firmware/updates/${version?}/${firmware}" ] \ + read -r fw_path_para < /sys/module/firmware_class/parameters/path + + if { [ -n "$fw_path_para" ] && [ -e "${DESTDIR}/${fw_path_para}/${firmware}" ]; } \ + || [ -e "${DESTDIR}/lib/firmware/updates/${version?}/${firmware}" ] \ || [ -e "${DESTDIR}/lib/firmware/updates/${firmware}" ] \ || [ -e "${DESTDIR}/lib/firmware/${version}/${firmware}" ] \ || [ -e "${DESTDIR}/lib/firmware/${firmware}" ]; then return 0 fi - for fwloc in "/lib/firmware/updates/${version}/${firmware}" \ + [ -n "$fw_path_para" ] && path_firmware="${fw_path_para}/${firmware}" || path_firmware= + for fwloc in "$path_firmware" \ + "/lib/firmware/updates/${version}/${firmware}" \ "/lib/firmware/updates/${firmware}" \ "/lib/firmware/${version}/${firmware}" \ "/lib/firmware/${firmware}"; do -- 2.30.2From c9fa06411d3116cf851b68c319669c0f3649fd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= <nabijaczlew...@nabijaczleweli.xyz> Date: Tue, 26 Apr 2022 15:49:45 +0200 Subject: [PATCH 2/3] Handle compressed firmware in add_firmware() X-Mutt-PGP: OS With CONFIG_FW_LOADER_COMPRESS, Linux additionally tries the normal search path but suffixed with .xz, and decompresses it in-kernel, cf. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/firmware_loader/main.c?h=v5.17#n754 --- hook-functions | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/hook-functions b/hook-functions index e9f09c0..3790343 100644 --- a/hook-functions +++ b/hook-functions @@ -57,32 +57,36 @@ add_modules_from_file() # whether a warning should be printed in that case.) add_firmware() { - local firmware fwloc fw_path_para path_firmware + local firmware suffix fwloc fw_path_para path_firmware firmware="${1}" read -r fw_path_para < /sys/module/firmware_class/parameters/path - if { [ -n "$fw_path_para" ] && [ -e "${DESTDIR}/${fw_path_para}/${firmware}" ]; } \ - || [ -e "${DESTDIR}/lib/firmware/updates/${version?}/${firmware}" ] \ - || [ -e "${DESTDIR}/lib/firmware/updates/${firmware}" ] \ - || [ -e "${DESTDIR}/lib/firmware/${version}/${firmware}" ] \ - || [ -e "${DESTDIR}/lib/firmware/${firmware}" ]; then - return 0 - fi - - [ -n "$fw_path_para" ] && path_firmware="${fw_path_para}/${firmware}" || path_firmware= - for fwloc in "$path_firmware" \ - "/lib/firmware/updates/${version}/${firmware}" \ - "/lib/firmware/updates/${firmware}" \ - "/lib/firmware/${version}/${firmware}" \ - "/lib/firmware/${firmware}"; do - if [ -e "$fwloc" ]; then - copy_file firmware "$fwloc" + for suffix in "" ".xz"; do + if { [ -n "$fw_path_para" ] && [ -e "${DESTDIR}/${fw_path_para}/${firmware}${suffix}" ]; } \ + || [ -e "${DESTDIR}/lib/firmware/updates/${version?}/${firmware}${suffix}" ] \ + || [ -e "${DESTDIR}/lib/firmware/updates/${firmware}${suffix}" ] \ + || [ -e "${DESTDIR}/lib/firmware/${version}/${firmware}${suffix}" ] \ + || [ -e "${DESTDIR}/lib/firmware/${firmware}${suffix}" ]; then return 0 fi done + for suffix in "" ".xz"; do + [ -n "$fw_path_para" ] && path_firmware="${fw_path_para}/${firmware}${suffix}" || path_firmware= + for fwloc in "$path_firmware" \ + "/lib/firmware/updates/${version}/${firmware}${suffix}" \ + "/lib/firmware/updates/${firmware}${suffix}" \ + "/lib/firmware/${version}/${firmware}${suffix}" \ + "/lib/firmware/${firmware}${suffix}"; do + if [ -e "$fwloc" ]; then + copy_file firmware "$fwloc" + return 0 + fi + done + done + # We can't figure out where to get that firmware from. return 1 } -- 2.30.2From 1aa61184f923336823028e9565a8e8ff98dec39d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= <nabijaczlew...@nabijaczleweli.xyz> Date: Tue, 26 Apr 2022 16:13:20 +0200 Subject: [PATCH 3/3] Support ZSTD-compressed firmware in add_firmware() X-Mutt-PGP: OS Since 5.19, .zst-suffixed firmware is be supported with precedence over .xz, cf: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?h=driver-core-next&id=23cfbc6ec44e5e80d5522976ff45ffcdcddfb230 --- hook-functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hook-functions b/hook-functions index 3790343..6e4bde3 100644 --- a/hook-functions +++ b/hook-functions @@ -63,7 +63,7 @@ add_firmware() read -r fw_path_para < /sys/module/firmware_class/parameters/path - for suffix in "" ".xz"; do + for suffix in "" ".zst" ".xz"; do if { [ -n "$fw_path_para" ] && [ -e "${DESTDIR}/${fw_path_para}/${firmware}${suffix}" ]; } \ || [ -e "${DESTDIR}/lib/firmware/updates/${version?}/${firmware}${suffix}" ] \ || [ -e "${DESTDIR}/lib/firmware/updates/${firmware}${suffix}" ] \ @@ -73,7 +73,7 @@ add_firmware() fi done - for suffix in "" ".xz"; do + for suffix in "" ".zst" ".xz"; do [ -n "$fw_path_para" ] && path_firmware="${fw_path_para}/${firmware}${suffix}" || path_firmware= for fwloc in "$path_firmware" \ "/lib/firmware/updates/${version}/${firmware}${suffix}" \ -- 2.30.2signature.asc
Description: PGP signature
--- End Message ---
--- Begin Message ---Version: 0.143 You fixed this but forgot to include Closes: in your commit message. :-) Ben. -- Ben Hutchings Any smoothly functioning technology is indistinguishable from a rigged demo.signature.asc
Description: This is a digitally signed message part
--- End Message ---