Missing vendor/product/sku specific ISH firmware for Dell laptops

Bug #2094768 reported by You-Sheng Yang
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
HWE Next
New
Undecided
Unassigned
linux-firmware (Ubuntu)
Fix Released
Undecided
You-Sheng Yang
Noble
In Progress
High
You-Sheng Yang
Plucky
In Progress
High
You-Sheng Yang
Questing
In Progress
High
You-Sheng Yang

Bug Description

[ SRU Justification ]

[ Impact ]

No machine specific ISH fw to be loaded:
```
$ sudo dmesg | grep ish
kernel: intel_ish_ipc 0000:00:12.0: ISH loader: load firmware: intel/ish/ish_lnlm.bin
kernel: intel_ish_ipc 0000:00:12.0: ISH loader: cmd 2 failed 10
kernel: intel_ish_ipc 0000:00:12.0: ISH loader: cmd 2 failed 10
kernel: intel_ish_ipc 0000:00:12.0: ISH loader: wait response of cmd 0 timeout
```

Proposed fix https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=96ed5b3686d0836c33c7141f6deb2c3e555aa5a8 under upstream tag 20251011.

[ Test Plan ]

1. Install linux-firmware from -proposed pocket.
   ```
   $ sudo apt install --no-install-recommends --yes linux-firmware
   ```

2. Make sure you update initramfs. The generic ish fw might have been included in initramfs, and that will become the first choice while searching for ish fw:
   ```
   $ sudo update-initramfs -u -k all
   ```

3. Reboot and check dmesg:
   ```
   $ sudo dmesg | grep ish
   intel_ish_ipc 0000:00:12.0: ISH loader: load firmware: intel/ish/ish_lnlm_39ceeaf8.bin
   intel_ish_ipc 0000:00:12.0: ISH loader: firmware loaded. size:854528
   intel_ish_ipc 0000:00:12.0: ISH loader: FW base version: 5.8.0.7727
   intel_ish_ipc 0000:00:12.0: ISH loader: FW project version: 58.7727.0.12958
   ish-hid {33AECD58-B679-4E54-9BD9-A04D34F0C226}: [hid-ish]: enum_devices_done OK, num_hid_devices=3
   hid-generic 001F:8087:0AC2.0002: hidraw1: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2] on
   hid-generic 001F:8087:0AC2.0003: hidraw2: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2] on
   hid-generic 001F:8087:0AC2.0004: hidraw3: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2] on
   hid-sensor-hub 001F:8087:0AC2.0002: hidraw1: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2] on
   hid-sensor-hub 001F:8087:0AC2.0003: hidraw2: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2] on
   hid-sensor-hub 001F:8087:0AC2.0004: hidraw3: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2] on
   ```

[ Where problems could occur ]

No. This installs the right firmware for selected platforms and only the affects the platforms that need this firmware blob.

[ Other Info ]

Nominate for Noble, Plucky, Questing for support of DELL platforms of Intel Lunar Lake cpus. Resolute will have it after rebased onto tag 20251011.

========== original bug report ==========

Proposed fix https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=96ed5b3686d0836c33c7141f6deb2c3e555aa5a8 under upstream tag 20251011.

You-Sheng Yang (vicamo)
tags: added: oem-priority originate-from-2046123 somerville
Revision history for this message
You-Sheng Yang (vicamo) wrote :

Somehow I feel there is a bug in update-initramfs.

So after install custom blobs:

$ ls -l|awk '/->/ {print $9 " " $10 " " $11}'
ish_lnlm_39ceeaf8_0f095bd1.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_27e280ea.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_2d924439.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_46171bac.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_793c79e4.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_916dce72.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_af74be99.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm_39ceeaf8_d8738e0f.bin.zst -> ish_lnlm_39ceeaf8_58.7724.2.bin.zst
ish_lnlm.bin.zst

The custom blob is not loaded unless one symlink it as the default ish_lnlm.bin.zst:

[ 1.508997] intel_ish_ipc 0000:00:12.0: ISH loader: load firmware: intel/ish/ish_lnlm.bin
[ 1.534957] intel_ish_ipc 0000:00:12.0: ISH loader: firmware loaded. size:829952
[ 1.534959] intel_ish_ipc 0000:00:12.0: ISH loader: FW base version: 5.8.0.7724
[ 1.534961] intel_ish_ipc 0000:00:12.0: ISH loader: FW project version: 58.7724.2.12658

And from update-initramefs messages, custom blobs are not included into initramfs and therefore not detected:

$ update-initramefs -v -u -k $(uname -r)
...
dracut-install: Missing firmware intel/ish/ish_*.bin for kernel module intel_ish_ipc
dracut-install: mkdir '/var/tmp/mkinitramfs_9uk7FI/lib/firmware/intel/ish'
dracut-install: cp '/lib/firmware/intel/ish/ish_lnlm_39ceeaf8_58.7724.2.bin.zst' '/var/tmp/mkinitramfs_9uk7FI/lib/firmware/intel/ish/ish_lnlm_39ceeaf8_58.7724.2.bin.zst'
dracut-install: ln -s 'ish_lnlm_39ceeaf8_58.7724.2.bin.zst' '/var/tmp/mkinitramfs_9uk7FI/lib/firmware/intel/ish/ish_lnlm.bin.zst'
...

Revision history for this message
You-Sheng Yang (vicamo) wrote :

$ find /lib/modules/$(uname -r) -name \*.ko.zst -exec bash -c "m=\$(basename "{}"); m=\${m%%.*}; modinfo \$m|grep '^firmware:.*\*'" \;
firmware: brcm/brcmbt4388*.ptb
firmware: brcm/brcmbt4388*.bin
firmware: brcm/brcmbt4387*.ptb
firmware: brcm/brcmbt4387*.bin
firmware: brcm/brcmbt4378*.ptb
firmware: brcm/brcmbt4378*.bin
firmware: brcm/brcmbt4377*.ptb
firmware: brcm/brcmbt4377*.bin
firmware: intel/ish/ish_*.bin
firmware: ath11k/WCN6855/hw2.1/*
firmware: ath11k/WCN6855/hw2.0/*
firmware: ath11k/QCN9074/hw1.0/*
firmware: ath11k/QCA6390/hw2.0/*
firmware: brcm/brcmfmac*-sdio.*.bin
firmware: brcm/brcmfmac*-sdio.*.txt
firmware: brcm/brcmfmac*-pcie.*.txcap_blob
firmware: brcm/brcmfmac*-pcie.*.clm_blob
firmware: brcm/brcmfmac*-pcie.*.bin
firmware: brcm/brcmfmac*-pcie.*.txt
firmware: brcm/brcmfmac*-pcie.txt

Revision history for this message
You-Sheng Yang (vicamo) wrote (last edit ):

In source code for /usr/lib/dracut/dracut-install, that is, source package dracut, file src/install/dracut-install.c, function install_firmware:

  _asprintf(&fwpath, "%s/%s", *q, value);

  if (strpbrk(value, "*?[") != NULL
      && access(fwpath, F_OK) != 0) {
          size_t i;
          _cleanup_globfree_ glob_t globbuf;

          glob(fwpath, 0, NULL, &globbuf);
          for (i = 0; i < globbuf.gl_pathc; i++) {
                  ret = install_firmware_fullpath(globbuf.gl_pathv[i]);
                  if (ret == 0)
                          found_this = true;
          }

So when value has "intel/ish/ish_*.bin", it's supposed to go through the glob loop. Yet the test `access(fwpath, F_OK)` will return fail, because now all the bin files are compressed and their filenames do not have ".bin" at the end. And even one fixed that access call, the glob loop is done with ".bin" suffix, too. This means everything in this if-block has to be written.

This still affects the latest Debian release, as well as the upstream (https://github.com/dracut-ng/dracut-ng) main branch.

Revision history for this message
You-Sheng Yang (vicamo) wrote :

Filed dracut upstream bug https://github.com/dracut-ng/dracut-ng/issues/1150 and launchpad bug 2095518.

Revision history for this message
You-Sheng Yang (vicamo) wrote :

dracut fix merged in upstream and landed to Ubuntu noble-proposed/oracular-proposed/plucky. Awaiting for a formal binary release from vendor.

Changed in linux-firmware (Ubuntu):
status: New → Incomplete
Juerg Haefliger (juergh)
tags: added: kernel-daily-bug
Revision history for this message
Etienne CHAMPETIER (champtar) wrote :

@vicamo do you know when Dell plan to release those firmwares ?

Juerg Haefliger (juergh)
Changed in linux-firmware (Ubuntu):
assignee: nobody → You-Sheng Yang (vicamo)
You-Sheng Yang (vicamo)
Changed in linux-firmware (Ubuntu Questing):
status: Incomplete → In Progress
Changed in linux-firmware (Ubuntu Plucky):
status: New → In Progress
Changed in linux-firmware (Ubuntu Noble):
status: New → In Progress
Changed in linux-firmware (Ubuntu):
status: Incomplete → Fix Released
Revision history for this message
You-Sheng Yang (vicamo) wrote (last edit ):
description: updated
description: updated
You-Sheng Yang (vicamo)
description: updated
Changed in linux-firmware (Ubuntu Noble):
assignee: nobody → You-Sheng Yang (vicamo)
Changed in linux-firmware (Ubuntu Plucky):
assignee: nobody → You-Sheng Yang (vicamo)
Changed in linux-firmware (Ubuntu Noble):
importance: Undecided → High
Changed in linux-firmware (Ubuntu Plucky):
importance: Undecided → High
Changed in linux-firmware (Ubuntu Questing):
importance: Undecided → High
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.