update-initramfs not adding i915 GuC firmware for Kaby Lake, firmware fails to load

Bug #1728238 reported by spike speigel
46
This bug affects 9 people
Affects Status Importance Assigned to Milestone
initramfs-tools
Invalid
Undecided
Unassigned
linux (Ubuntu)
Fix Released
High
Joseph Salisbury
Bionic
Fix Released
High
Joseph Salisbury

Bug Description

== SRU Justification ==
This firmware was optional when the MODULE_FIRMWARE statements were
removed in bug 1626740 by Bionic commit dc0f16f9b50. The firmware is now
available and in use, so these statements need to be added back.

Without these statements, The i915 Kabylake GuC firmware is failing to load
on boot, and generating dmesg errors.

== Fix ==
Revert Bionic commit dc0f16f9b5084e6be2b8c79f8c6cd499a3451791.

== Regression Potential ==
Low. Adding a statement back that was removed by a SAUCE patch.

== Test Case ==
A test kernel was built with this patch and tested by the original bug reporter.
The bug reporter states the test kernel resolved the bug.

== Original Bug Report ==
The i915 Kabylake GuC firmware is failing to load on boot, and generating dmesg errors. The Kabylake HuC firmware succeeds. All files exist. I've also verified the Kabylake GuC firmware matches the correct file size and md5 listed on 01.org.

I then ran update-initramfs verbosely, and see that only /lib/firmware/i915/skl_guc_ver6_1.bin is being added. /lib/firmware/i915/bxt_guc_ver8_7.bin and /lib/firmware/i915/kbl_guc_ver9_14.bin seem to be ignored.

I'm running a Dell XPS 13 9360 w/ Kabylake on Ubuntu 17.10 and initramfs-tools 0.125ubuntu12. Perhaps Broxton systems might have the same issue?

Output and logs:
-----------------

ls -al /lib/firmware/i915/kbl_*

-rw-r--r-- 1 root root 8616 Aug 17 11:08 /lib/firmware/i915/kbl_dmc_ver1_01.bin
lrwxrwxrwx 1 root root 19 Aug 17 11:08 /lib/firmware/i915/kbl_dmc_ver1.bin -> kbl_dmc_ver1_01.bin
-rw-r--r-- 1 root root 142656 Oct 20 21:12 /lib/firmware/i915/kbl_guc_ver9_14.bin
-rw-r--r-- 1 root root 218688 Aug 17 11:09 /lib/firmware/i915/kbl_huc_ver02_00_1810.bin

sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status

GuC firmware status:
path: i915/kbl_guc_ver9_14.bin
fetch: FAIL
load: NONE
version wanted: 9.14
version found: 0.0
header: offset is 0; size = 0
uCode: offset is 0; size = 0
RSA: offset is 0; size = 0

GuC status 0x00000001:
Bootrom status = 0x0
uKernel status = 0x0
MIA Core status = 0x0

Scratch registers:
0: 0x0
1: 0x0
2: 0x0
3: 0x0
4: 0x0
5: 0x0
6: 0x0
7: 0x0
8: 0x0
9: 0x0
10: 0x0
11: 0x0
12: 0x0
13: 0x0
14: 0x0
15: 0x0

sudo cat /sys/kernel/debug/dri/0/i915_huc_load_status

HuC firmware status:
path: i915/kbl_huc_ver02_00_1810.bin
fetch: SUCCESS
load: SUCCESS
version wanted: 2.0
version found: 2.0
header: offset is 0; size = 128
uCode: offset is 128; size = 218304
RSA: offset is 218432; size = 256

HuC status 0x00006000:

dmesg

[ 1.052879] hidraw: raw HID events driver (C) Jiri Kosina
[ 1.056426] wmi_bus wmi_bus-PNP0C14:01: WQBC data block query control method not found
[ 1.080320] rtsx_pci 0000:3b:00.0: enabling device (0000 -> 0002)
[ 1.082308] nvme nvme0: pci function 0000:3c:00.0
[ 1.095073] Setting dangerous option enable_guc_loading - tainting kernel
[ 1.095075] Setting dangerous option enable_guc_submission - tainting kernel
[ 1.097867] [drm] Memory usable by graphics device = 4078M
[ 1.097869] checking generic (90000000 1fb0000) vs hw (90000000 10000000)
[ 1.097869] fb: switching to inteldrmfb from EFI VGA
[ 1.097899] Console: switching to colour dummy device 80x25
[ 1.098049] [drm] Replacing VGA console driver
[ 1.104157] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.104157] [drm] Driver supports precise vblank timestamp query.
[ 1.112506] [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_01.bin (v1.1)
[ 1.113055] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 1.284194] usb 1-1: new low-speed USB device number 2 using xhci_hcd
[ 1.298572] nvme0n1: p1 p2
[ 1.433241] usb 1-1: New USB device found, idVendor=0d62, idProduct=001c
[ 1.433242] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1.433243] usb 1-1: Product: USB+PS2 Keyboard
[ 1.433244] usb 1-1: Manufacturer: Generic
[ 1.446460] usbcore: registered new interface driver usbhid
[ 1.446461] usbhid: USB HID core driver
[ 1.448067] input: Generic USB+PS2 Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:0D62:001C.0001/input/input7
[ 1.508451] hid-generic 0003:0D62:001C.0001: input,hidraw0: USB HID v1.10 Keyboard [Generic USB+PS2 Keyboard] on usb-0000:00:14.0-1/input0
[ 1.508541] input: Generic USB+PS2 Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1/0003:0D62:001C.0002/input/input8
[ 1.552213] usb 1-2: new full-speed USB device number 3 using xhci_hcd
[ 1.568448] hid-generic 0003:0D62:001C.0002: input,hidraw1: USB HID v1.10 Device [Generic USB+PS2 Keyboard] on usb-0000:00:14.0-1/input1
[ 1.695655] usb 1-2: New USB device found, idVendor=046d, idProduct=c52b
[ 1.695656] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1.695657] usb 1-2: Product: USB Receiver
[ 1.695658] usb 1-2: Manufacturer: Logitech
[ 1.702641] logitech-djreceiver 0003:046D:C52B.0005: hiddev0,hidraw2: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-2/input2
[ 1.820317] usb 1-3: new full-speed USB device number 4 using xhci_hcd
[ 1.835948] input: Logitech M510 as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:046D:C52B.0005/0003:046D:4051.0006/input/input9
[ 1.836129] logitech-hidpp-device 0003:046D:4051.0006: input,hidraw3: USB HID v1.11 Mouse [Logitech M510] on usb-0000:00:14.0-2:1
[ 1.838085] input: Logitech K750 as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:046D:C52B.0005/0003:046D:4002.0007/input/input10
[ 1.838283] logitech-hidpp-device 0003:046D:4002.0007: input,hidraw4: USB HID v1.11 Keyboard [Logitech K750] on usb-0000:00:14.0-2:2
[ 1.896270] psmouse serio1: synaptics: queried max coordinates: x [..5666], y [..4734]
[ 1.927267] psmouse serio1: synaptics: queried min coordinates: x [1276..], y [1118..]
[ 1.927271] psmouse serio1: synaptics: Your touchpad (PNP: DLL075b PNP0f13) says it can support a different bus. If i2c-hid and hid-rmi are not used, you might want to try setting psmouse.synaptics_intertouch to 1 and report this to <email address hidden>.
[ 1.938732] i915 0000:00:02.0: Direct firmware load for i915/kbl_guc_ver9_14.bin failed with error -2
[ 1.938733] [drm] Failed to fetch valid uC firmware from i915/kbl_guc_ver9_14.bin (error -2)
[ 1.944000] [drm:intel_uc_init_hw [i915]] *ERROR* GuC init failed
[ 1.944027] [drm] Falling back from GuC submission to execlist mode
[ 1.944027] [drm] GuC firmware loading disabled
[ 1.944746] [drm] Initialized i915 1.6.0 20170619 for 0000:00:02.0 on minor 0
[ 1.948280] clocksource: Switched to clocksource tsc
[ 1.955378] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)
[ 1.956112] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input11
[ 1.961603] usb 1-3: New USB device found, idVendor=0cf3, idProduct=e301
[ 1.961604] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0

sudo update-initramfs -u -v -k all

Adding firmware /lib/firmware/nvidia/gp10b/gr/gpccs_data.bin
Adding firmware /lib/firmware/nvidia/gp10b/gr/gpccs_inst.bin
Adding firmware /lib/firmware/nvidia/gp10b/gr/gpccs_bl.bin
Adding firmware /lib/firmware/nvidia/gp10b/gr/fecs_sig.bin
Adding firmware /lib/firmware/nvidia/gp10b/gr/fecs_data.bin
Adding firmware /lib/firmware/nvidia/gp10b/gr/fecs_inst.bin
Adding firmware /lib/firmware/nvidia/gp10b/gr/fecs_bl.bin
Adding firmware /lib/firmware/nvidia/gp10b/acr/ucode_load.bin
Adding firmware /lib/firmware/nvidia/gp10b/acr/bl.bin
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/vgem/vgem.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/cirrus/cirrus.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/i915/i915.ko
Adding firmware /lib/firmware/i915/bxt_dmc_ver1_07.bin
Adding firmware /lib/firmware/i915/skl_dmc_ver1_26.bin
Adding firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin
Adding firmware /lib/firmware/i915/skl_guc_ver6_1.bin
Adding firmware /lib/firmware/i915/kbl_huc_ver02_00_1810.bin
Adding firmware /lib/firmware/i915/bxt_huc_ver01_07_1398.bin
Adding firmware /lib/firmware/i915/skl_huc_ver01_07_1398.bin
Adding module /lib/modules/4.13.0-16-generic/kernel/virt/lib/irqbypass.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/arch/x86/kvm/kvm.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/vfio/vfio.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/vfio/vfio_iommu_type1.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/vfio/mdev/mdev.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/vfio/mdev/vfio_mdev.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/i915/gvt/kvmgt.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/i2c/ch7006.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/i2c/sil164.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/i2c/tda998x.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/udl/udl.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/hisilicon/hibmc/hibmc-drm.ko
Adding module /lib/modules/4.13.0-16-generic/kernel/drivers/gpu/drm/radeon/radeon.ko
Adding firmware /lib/firmware/radeon/R520_cp.bin
Adding firmware /lib/firmware/radeon/RS600_cp.bin
Adding firmware /lib/firmware/radeon/RS690_cp.bin
Adding firmware /lib/firmware/radeon/R420_cp.bin
Adding firmware /lib/firmware/radeon/R300_cp.bin
Adding firmware /lib/firmware/radeon/R200_cp.bin
Adding firmware /lib/firmware/radeon/R100_cp.bin
Adding firmware /lib/firmware/radeon/SUMO2_me.bin
Adding firmware /lib/firmware/radeon/SUMO2_pfp.bin
Adding firmware /lib/firmware/radeon/SUMO_me.bin

CVE References

description: updated
tags: added: artful
description: updated
tags: added: firmware i915
summary: - initramfs not adding i915 GuC firmware, firmware fails to load
+ update-initramfs not adding i915 GuC firmware, firmware fails to load
tags: added: broxton kabylake
description: updated
no longer affects: initramfs-tools
Revision history for this message
spike speigel (frail-knight) wrote : Re: update-initramfs not adding i915 GuC firmware, firmware fails to load

It appears that bug #857997 in Debian's tracker was merged into Bug #854695. Just wanted to note that, and update the external tracker URL.

Revision history for this message
spike speigel (frail-knight) wrote :

UGH, apparently Launchpad like to link bugs for you, and in this case, it linked the Debian bug #s to unrelated projects/package bugs...Please disregard the links in Comment #1

tags: added: xenial zesty
Changed in initramfs-tools (Debian):
status: Unknown → Fix Released
Revision history for this message
spike speigel (frail-knight) wrote :

I looked into this a bit more, and it seems Ubuntu is basing off of linux-firmware at kernel.org and not following Debian's use of firmware-misc-nonfree. I'm removing the watch related to firmware-misc-nonfree, but there appears to still be an issue with update-initramfs and the i915 firmware for Kabylake and Broxton systems.

Changed in initramfs-tools (Debian):
importance: Unknown → Undecided
status: Fix Released → New
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in initramfs-tools (Ubuntu):
status: New → Confirmed
Revision history for this message
Paul Malmsten (pmalmsten) wrote :

Also hit this issue on a Dell XPS 13 9360 (i7-8550U) running 17.10 and initramfs-tools 0.125ubuntu12. Until a fix is available, I was able to workaround the issue by adding my own initramfs-tools hook.

I created a hook script to copy the firmware:

$ cat /etc/initramfs-tools/hooks/i915_add_kbl_guc_ver9_14
#!/bin/sh

PREREQ=""
prereqs()
{
   echo "$PREREQ"
}

case $1 in
prereqs)
   prereqs
   exit 0
   ;;
esac

. /usr/share/initramfs-tools/hook-functions
# Begin real processing below this line

copy_file firmware /lib/firmware/i915/kbl_guc_ver9_14.bin /lib/firmware/i915/kbl_guc_ver9_14.bin
exit 0

Marked the script as executable, and updated all initramfs images:

$ sudo chmod u+x /etc/initramfs-tools/hooks/i915_add_kbl_guc_ver9_14
$ sudo update-initramfs -k all -u
$ sudo update-grub

After reboot, success:

$ sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status
GuC firmware status:
 path: i915/kbl_guc_ver9_14.bin
 fetch: SUCCESS
 load: SUCCESS
 version wanted: 9.14
 version found: 9.14
 header: offset is 0; size = 128
 uCode: offset is 128; size = 142272
 RSA: offset is 142400; size = 256

GuC status 0x800330ed:
 Bootrom status = 0x76
 uKernel status = 0x30
 MIA Core status = 0x3

Scratch registers:
  0: 0xf0000000
  1: 0x0
  2: 0x0
  3: 0x5f5e100
  4: 0x600
  5: 0xd5fd3
  6: 0x0
  7: 0x8
  8: 0x3
  9: 0x74240
 10: 0x0
 11: 0x0
 12: 0x0
 13: 0x0
 14: 0x0
 15: 0x0

Revision history for this message
spike speigel (frail-knight) wrote :

Thanks Paul, that workaround helped me. The 9.14 GuC loads now. I tried downloading the new 9.39 GuC on intel's site, and changing the version in the hook script, but the 9.39 firmware would not load for some reason. Maybe due to both firmware versions existing in /lib/firmware/i915/ on my system and the older one being seen/used first. I might try again later and moving the older firmware, but am content with it loading as it is now.

Revision history for this message
Thorsten (thorstenr-42) wrote :

also happens on ubuntu 18.04 on a i7-8550U

[ 2.084195] i915 0000:00:02.0: Direct firmware load for i915/kbl_guc_ver9_14.bin failed with error -2
[ 2.084196] [drm] GuC: Failed to fetch firmware i915/kbl_guc_ver9_14.bin (error -2)
[ 2.084197] [drm] GuC: Firmware can be downloaded from https://01.org/linuxgraphics/downloads/firmware
[ 2.089954] [drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
[ 2.090000] [drm] GuC init failed. Firmware loading disabled.
[ 2.090003] [drm] Falling back from GuC submission to execlist mode
[ 2.090717] [drm] Initialized i915 1.6.0 20171023 for 0000:00:02.0 on minor 0

tags: added: bionic
tags: added: xps
tags: added: 9360
tags: added: i965
tags: added: kbl
tags: added: bxt
tags: added: intel
tags: added: dell
no longer affects: initramfs-tools (Debian)
Revision history for this message
dino99 (9d9) wrote :

*********************

Looks like its more a kernel issue related to the Dell drivers, not requesting the missing GuC.
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915

I suppose initramfs is not faulty; maybe linux-firmware is.

Better opening a separate kernel bug on launchpad and upstream to get a fix chance (need to check the latest kernel version to know if that issue is solved)

********************

Revision history for this message
Thorsten (thorstenr-42) wrote :

i can just add that its working fine under arch. However the error occurs under ubuntu 18.04. Both use 4.15.

Moreover i have a thinkpad x1 gen 6 and not a dell

Revision history for this message
dino99 (9d9) wrote :

Good to know; so its mostly due to the ubuntu kernel patches added / custom settings.

Revision history for this message
Jordan (j0rd-spam) wrote :

Same problem.

x1 carbon gen6 like Thorsten, Ubuntu 18.04. Kernel 4.15.

Revision history for this message
virgosun (hdefendme) wrote :

Thanks for the work around!
Why it affects only my custom kernel 4.14.0.15 Artful?

Revision history for this message
Ernst Persson (ernstp) wrote :

mkinitramfs runs modinfo -F firmware i915 which only lists the following files:
i915/bxt_dmc_ver1_07.bin
i915/skl_dmc_ver1_26.bin
i915/kbl_dmc_ver1_01.bin
i915/skl_guc_ver6_1.bin
i915/kbl_huc_ver02_00_1810.bin
i915/bxt_huc_ver01_07_1398.bin
i915/skl_huc_ver01_07_1398.bin

tags: added: carbon gen6 lenovo thinkpad x1
Revision history for this message
mtvoid (mtvoid) wrote :

This is the commit that is responsible for the Kabylake GuC firmware file not being registered in the i915 module on Ubuntu kernels: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/commit/drivers/gpu/drm/i915/intel_guc_fw.c?id=dc0f16f9b5084e6be2b8c79f8c6cd499a3451791

This is the accompanying bug report: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1626740

I've also commented there to bring the issue to their attention. The change should be reverted now that the formerly missing firmware files are present in linux-firmware.

mtvoid (mtvoid)
affects: initramfs-tools (Ubuntu) → linux (Ubuntu)
summary: - update-initramfs not adding i915 GuC firmware, firmware fails to load
+ update-initramfs not adding i915 GuC firmware for Kaby Lake, firmware
+ fails to load
Revision history for this message
spike speigel (frail-knight) wrote :

Are they aware the same issue appears to be happening with the Broxton firmware as well? Should that be tracked under a separate issue?

Revision history for this message
mtvoid (mtvoid) wrote :

Reverting that commit will address the firmware loading issue for both kbl and bxt. Although as far as I understand, Intel had cancelled Broxton, and there are no chips based on it in the market, so it's basically Kaby Lake users that are affected.

tags: added: kernel-da-key
Changed in linux (Ubuntu):
importance: Undecided → High
Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

I built a Bionic test kernel with a revert of the following commit:
dc0f16f9b508 ("UBUNTU: SAUCE: (no-up) i915: Remove MODULE_FIRMWARE statements for unreleased firmware")

The test kernel can be downloaded from:
http://kernel.ubuntu.com/~jsalisbury/lp1728238

Can you test this kernel and see if it resolves this bug?

Note about installing test kernels:
• If the test kernel is prior to 4.15(Bionic) you need to install the linux-image and linux-image-extra .deb packages.
• If the test kernel is 4.15(Bionic) or newer, you need to install the linux-image-unsigned, linux-modules and linux-modules-extra .deb packages.

Thanks in advance!

Revision history for this message
spike speigel (frail-knight) wrote :

@mtvoid Thank you for clearing that up. I was not aware that Broxton was Atom. For some reason I thought it was an earlier generation x64 Core architecture.

@jsalisbury I am running Bionic. I've never tested a kernel before, but am willing to do so.

Revision history for this message
spike speigel (frail-knight) wrote :

@jsalisbury This does indeed fix the issue:

~$ sudo update-initramfs -u -v -k all|grep kbl
Adding firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin
Adding firmware /lib/firmware/i915/kbl_huc_ver02_00_1810.bin
/usr/sbin/iucode_tool: system has processor(s) with signature 0x000806e9
/usr/sbin/iucode_tool: Writing selected microcodes to: /var/tmp/mkinitramfs-EFW_1VBI8FyxJM
/usr/share/initramfs-tools/scripts/panic/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-top/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-block/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-top/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-premount/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-premount/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-bottom/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-bottom/ORDER ignored: not executable
Adding firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin
Adding firmware /lib/firmware/i915/kbl_guc_ver9_14.bin
Adding firmware /lib/firmware/i915/kbl_huc_ver02_00_1810.bin
/usr/sbin/iucode_tool: system has processor(s) with signature 0x000806e9
/usr/sbin/iucode_tool: Writing selected microcodes to: /var/tmp/mkinitramfs-EFW_LmLiZccZZr
/usr/share/initramfs-tools/scripts/panic/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-top/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-block/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-top/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-premount/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-premount/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-bottom/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-bottom/ORDER ignored: not executable

~$ uname -a
Linux 4.15.0-20-generic #21~lp1728238 SMP Mon May 7 16:50:25 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

~$ sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status
GuC firmware: i915/kbl_guc_ver9_14.bin
 status: fetch SUCCESS, load SUCCESS
 version: wanted 9.14, found 9.14
 header: offset 0, size 128
 uCode: offset 128, size 142272
 RSA: offset 142400, size 256

GuC status 0x800330ed:
 Bootrom status = 0x76
 uKernel status = 0x30
 MIA Core status = 0x3

Scratch registers:
  0: 0xf0000000
  1: 0x0
  2: 0x0
  3: 0x5f5e100
  4: 0x600
  5: 0xcdfd3
  6: 0x0
  7: 0x8
  8: 0x3
  9: 0x70240
 10: 0x0
 11: 0x0
 12: 0x0
 13: 0x0
 14: 0x0
 15: 0x0

~$ sudo cat /sys/kernel/debug/dri/0/i915_huc_load_status
HuC firmware: i915/kbl_huc_ver02_00_1810.bin
 status: fetch SUCCESS, load SUCCESS
 version: wanted 2.0, found 2.0
 header: offset 0, size 128
 uCode: offset 128, size 218304
 RSA: offset 218432, size 256

HuC status 0x00006080:

Revision history for this message
spike speigel (frail-knight) wrote :

And to clarify when I ran:

sudo update-initramfs -u -v -k all|grep kbl

The first round of firmware files is for 4.15.0-21-generic while the second listing is for your patched kernel. Notice the added GuC entry. As you can see the GuC firmware loads when running your patched kernel.

Thank you for building the test kernel :)

Changed in linux (Ubuntu):
assignee: nobody → Joseph Salisbury (jsalisbury)
status: Confirmed → In Progress
Changed in linux (Ubuntu Bionic):
status: New → In Progress
importance: Undecided → High
assignee: nobody → Joseph Salisbury (jsalisbury)
Revision history for this message
Joseph Salisbury (jsalisbury) wrote :
description: updated
Changed in linux (Ubuntu Bionic):
status: In Progress → Fix Committed
Revision history for this message
Brad Figg (brad-figg) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-bionic' to 'verification-done-bionic'. If the problem still exists, change the tag 'verification-needed-bionic' to 'verification-failed-bionic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-bionic
Revision history for this message
mtvoid (mtvoid) wrote :

Using the 4.15.0-23-generic kernel from bionic-proposed correctly loads the GuC firmware as expected:

[ 1.470927] [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_01.bin (v1.1)
[ 1.483832] [drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
[ 1.494403] [drm] GuC: Loaded firmware i915/kbl_guc_ver9_14.bin (version 9.14)
[ 1.509669] i915 0000:00:02.0: GuC submission enabled (firmware i915/kbl_guc_ver9_14.bin [version 9.14])

tags: added: verification-done-bionic
removed: 9360 carbon dell lenovo thinkpad verification-needed-bionic x1 xps
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (11.4 KiB)

This bug was fixed in the package linux - 4.15.0-23.25

---------------
linux (4.15.0-23.25) bionic; urgency=medium

  * linux: 4.15.0-23.25 -proposed tracker (LP: #1772927)

  * arm64 SDEI support needs trampoline code for KPTI (LP: #1768630)
    - arm64: mmu: add the entry trampolines start/end section markers into
      sections.h
    - arm64: sdei: Add trampoline code for remapping the kernel

  * Some PCIe errors not surfaced through rasdaemon (LP: #1769730)
    - ACPI: APEI: handle PCIe AER errors in separate function
    - ACPI: APEI: call into AER handling regardless of severity

  * qla2xxx: Fix page fault at kmem_cache_alloc_node() (LP: #1770003)
    - scsi: qla2xxx: Fix session cleanup for N2N
    - scsi: qla2xxx: Remove unused argument from qlt_schedule_sess_for_deletion()
    - scsi: qla2xxx: Serialize session deletion by using work_lock
    - scsi: qla2xxx: Serialize session free in qlt_free_session_done
    - scsi: qla2xxx: Don't call dma_free_coherent with IRQ disabled.
    - scsi: qla2xxx: Fix warning in qla2x00_async_iocb_timeout()
    - scsi: qla2xxx: Prevent relogin trigger from sending too many commands
    - scsi: qla2xxx: Fix double free bug after firmware timeout
    - scsi: qla2xxx: Fixup locking for session deletion

  * Several hisi_sas bug fixes (LP: #1768974)
    - scsi: hisi_sas: dt-bindings: add an property of signal attenuation
    - scsi: hisi_sas: support the property of signal attenuation for v2 hw
    - scsi: hisi_sas: fix the issue of link rate inconsistency
    - scsi: hisi_sas: fix the issue of setting linkrate register
    - scsi: hisi_sas: increase timer expire of internal abort task
    - scsi: hisi_sas: remove unused variable hisi_sas_devices.running_req
    - scsi: hisi_sas: fix return value of hisi_sas_task_prep()
    - scsi: hisi_sas: Code cleanup and minor bug fixes

  * [bionic] machine stuck and bonding not working well when nvmet_rdma module
    is loaded (LP: #1764982)
    - nvmet-rdma: Don't flush system_wq by default during remove_one
    - nvme-rdma: Don't flush delete_wq by default during remove_one

  * Warnings/hang during error handling of SATA disks on SAS controller
    (LP: #1768971)
    - scsi: libsas: defer ata device eh commands to libata

  * Hotplugging a SATA disk into a SAS controller may cause crash (LP: #1768948)
    - ata: do not schedule hot plug if it is a sas host

  * ISST-LTE:pKVM:Ubuntu1804: rcu_sched self-detected stall on CPU follow by CPU
    ATTEMPT TO RE-ENTER FIRMWARE! (LP: #1767927)
    - powerpc/powernv: Handle unknown OPAL errors in opal_nvram_write()
    - powerpc/64s: return more carefully from sreset NMI
    - powerpc/64s: sreset panic if there is no debugger or crash dump handlers

  * fsnotify: Fix fsnotify_mark_connector race (LP: #1765564)
    - fsnotify: Fix fsnotify_mark_connector race

  * Hang on network interface removal in Xen virtual machine (LP: #1771620)
    - xen-netfront: Fix hang on device removal

  * HiSilicon HNS NIC names are truncated in /proc/interrupts (LP: #1765977)
    - net: hns: Avoid action name truncation

  * Ubuntu 18.04 kernel crashed while in degraded mode (LP: #1770849)
    - SAUCE: powerpc/perf: Fix memory allocation for...

Changed in linux (Ubuntu Bionic):
status: Fix Committed → Fix Released
status: Fix Committed → Fix Released
mtvoid (mtvoid)
Changed in initramfs-tools:
status: New → Invalid
Changed in linux (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

It now appears reverting Bionic commit dc0f16f9b508 has introduced bug 1777242. We need to put now either revert the revert or find an alternative fix.

Changed in linux (Ubuntu):
status: Fix Released → In Progress
Changed in linux (Ubuntu Bionic):
status: Fix Released → In Progress
Revision history for this message
mtvoid (mtvoid) wrote :

On the face of it, I cannot see how this particular commit could in any way cause that other bug to arise. All it does is to allow the i915 driver to load a particular firmware file, and that too only if it's explicitly specified on the kernel command line.

I think bug 1777242 needs to be investigated further, to find the exact conditions under which it can be reliably replicated. The comment https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1777242/comments/8 (regarding an error with the qkl.ko module for QEMU), seems worth looking into.

Revision history for this message
spike speigel (frail-knight) wrote :

So this is now broken again?

Revision history for this message
Georgi Boiko (pandasauce) wrote :

This issue with being unable to load GuC blobs also affects xenial at 4.13.0-45 kernel (latest).

Revision history for this message
grek (greku) wrote :
Download full text (4.2 KiB)

Hey,
I have a INTEL NUC with Pentium Silver J5005.

I got similar error with firmware loading.

uname -a
Linux darkstar 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

dmesg |grep i915
[ 2.042518] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 2.043007] i915 0000:00:02.0: Direct firmware load for i915/glk_dmc_ver1_04.bin failed with error -2
[ 2.043010] i915 0000:00:02.0: Failed to load DMC firmware i915/glk_dmc_ver1_04.bin. Disabling runtime power management.
[ 2.043012] i915 0000:00:02.0: DMC firmware homepage: https://01.org/linuxgraphics/downloads/firmware
[ 2.045950] [drm] Initialized i915 1.6.0 20171023 for 0000:00:02.0 on minor 0
[ 2.231576] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 3.686381] snd_hda_intel 0000:00:0e.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])

/lib/firmware/i915# ll
razem 1724
drwxr-xr-x 2 root root 4096 lip 27 15:06 ./
drwxr-xr-x 82 root root 20480 lip 27 15:06 ../
-rw-r--r-- 1 root root 8380 lis 17 2017 bxt_dmc_ver1_07.bin
lrwxrwxrwx 1 root root 19 lis 17 2017 bxt_dmc_ver1.bin -> bxt_dmc_ver1_07.bin
-rw-r--r-- 1 root root 140928 maj 18 20:09 bxt_guc_ver8_7.bin
-rw-r--r-- 1 root root 146432 maj 18 20:09 bxt_guc_ver9_29.bin
-rw-r--r-- 1 root root 154432 gru 5 2017 bxt_huc_ver01_07_1398.bin
-rw-r--r-- 1 root root 11224 maj 18 20:09 cnl_dmc_ver1_06.bin
-rw-r--r-- 1 root root 11268 maj 18 20:09 cnl_dmc_ver1_07.bin
-rw-r--r-- 1 root root 8800 kwi 24 17:28 glk_dmc_ver1_04.bin
-rw-r--r-- 1 root root 8616 lis 17 2017 kbl_dmc_ver1_01.bin
-rw-r--r-- 1 root root 8840 maj 18 20:09 kbl_dmc_ver1_04.bin
lrwxrwxrwx 1 root root 19 lis 17 2017 kbl_dmc_ver1.bin -> kbl_dmc_ver1_01.bin
-rw-r--r-- 1 root root 142656 maj 18 20:09 kbl_guc_ver9_14.bin
-rw-r--r-- 1 root root 147776 maj 18 20:09 kbl_guc_ver9_39.bin
-rw-r--r-- 1 root root 218688 gru 5 2017 kbl_huc_ver02_00_1810.bin
-rw-r--r-- 1 root root 8824 mar 30 2017 skl_dmc_ver1_23.bin
-rw-r--r-- 1 root root 8928 mar 30 2017 skl_dmc_ver1_26.bin
-rw-r--r-- 1 root root 8928 maj 18 20:09 skl_dmc_ver1_27.bin
lrwxrwxrwx 1 root root 19 mar 30 2017 skl_dmc_ver1.bin -> skl_dmc_ver1_26.bin
-rw-r--r-- 1 root root 109636 maj 18 20:09 skl_guc_ver1.bin
-rw-r--r-- 1 root root 128320 maj 18 20:09 skl_guc_ver4.bin
-rw-r--r-- 1 root root 129024 mar 30 2017 skl_guc_ver6_1.bin
lrwxrwxrwx 1 root root 18 mar 30 2017 skl_guc_ver6.bin -> skl_guc_ver6_1.bin
-rw-r--r-- 1 root root 147520 maj 18 20:09 skl_guc_ver9_33.bin
-rw-r--r-- 1 root root 140992 gru 5 2017 skl_huc_ver01_07_1398.bin

root@darkstar:/lib/firmware/i915# update-initramfs -u -v -k all |grep i915
Adding module /lib/modules/4.15.0-29-generic/kernel/drivers/gpu/drm/i915/gvt/kvmgt.ko
Adding module /lib/modules/4.15.0-29-generic/kernel/drivers/gpu/drm/i915/i915.ko
Adding firmware /lib/firmware/i915/bxt_dmc_ver1_07.bin
Adding firmware /lib/firmware/i915/skl_dmc_ver1_26.bin
Adding firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin
Adding firmware /lib/firmware/i915/kbl_guc_ver9_14.bin
Adding firmware /lib/firmware/i915/bxt_guc_ver8_7....

Read more...

Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (14.9 KiB)

This bug was fixed in the package linux - 4.17.0-6.7

---------------
linux (4.17.0-6.7) cosmic; urgency=medium

  * linux: 4.17.0-6.7 -proposed tracker (LP: #1783396)

  * [Regression] EXT4-fs error (device sda2): ext4_validate_block_bitmap:383:
    comm stress-ng: bg 4705: bad block bitmap checksum (LP: #1781709)
    - SAUCE: Revert "UBUNTU: SAUCE: ext4: fix ext4_validate_inode_bitmap: comm
      stress-ng: Corrupt inode bitmap"
    - SAUCE: ext4: check for allocation block validity with block group locked

  * Cosmic update to 4.17.9 stable release (LP: #1783201)
    - userfaultfd: hugetlbfs: fix userfaultfd_huge_must_wait() pte access
    - mm: hugetlb: yield when prepping struct pages
    - mm: teach dump_page() to correctly output poisoned struct pages
    - PCI / ACPI / PM: Resume bridges w/o drivers on suspend-to-RAM
    - ACPICA: Drop leading newlines from error messages
    - ACPI / battery: Safe unregistering of hooks
    - drm/amdgpu: Make struct amdgpu_atif private to amdgpu_acpi.c
    - tracing: Avoid string overflow
    - tracing: Fix missing return symbol in function_graph output
    - scsi: sg: mitigate read/write abuse
    - scsi: aacraid: Fix PD performance regression over incorrect qd being set
    - scsi: target: Fix truncated PR-in ReadKeys response
    - s390: Correct register corruption in critical section cleanup
    - drbd: fix access after free
    - vfio: Use get_user_pages_longterm correctly
    - ARM: dts: imx51-zii-rdu1: fix touchscreen pinctrl
    - ARM: dts: omap3: Fix am3517 mdio and emac clock references
    - ARM: dts: dra7: Disable metastability workaround for USB2
    - cifs: Fix use after free of a mid_q_entry
    - cifs: Fix memory leak in smb2_set_ea()
    - cifs: Fix slab-out-of-bounds in send_set_info() on SMB2 ACE setting
    - cifs: Fix infinite loop when using hard mount option
    - drm: Use kvzalloc for allocating blob property memory
    - drm/udl: fix display corruption of the last line
    - drm/amdgpu: Add amdgpu_atpx_get_dhandle()
    - drm/amdgpu: Dynamically probe for ATIF handle (v2)
    - jbd2: don't mark block as modified if the handle is out of credits
    - ext4: add corruption check in ext4_xattr_set_entry()
    - ext4: always verify the magic number in xattr blocks
    - ext4: make sure bitmaps and the inode table don't overlap with bg
      descriptors
    - ext4: always check block group bounds in ext4_init_block_bitmap()
    - ext4: only look at the bg_flags field if it is valid
    - ext4: verify the depth of extent tree in ext4_find_extent()
    - ext4: include the illegal physical block in the bad map ext4_error msg
    - ext4: clear i_data in ext4_inode_info when removing inline data
    - ext4: never move the system.data xattr out of the inode body
    - ext4: avoid running out of journal credits when appending to an inline file
    - ext4: add more inode number paranoia checks
    - ext4: add more mount time checks of the superblock
    - ext4: check superblock mapped prior to committing
    - HID: i2c-hid: Fix "incomplete report" noise
    - HID: hiddev: fix potential Spectre v1
    - HID: debug: check length before copy_to_user()
    - HID: core: allow concurrent registr...

Changed in linux (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
mrvst (maravento) wrote :

Bug Confirm in Ubuntu Mate 18.04.1 x64 kernel 4.15.0-39-generic (work around doesn't work)

Changed in linux (Ubuntu Bionic):
status: In Progress → Fix Released
Revision history for this message
ericb (eric-bachard) wrote :
Download full text (4.4 KiB)

Disclaimer : what I did concerns 4.15.0 kernel only, on Intel machine (Assus Zenbook pro, x86_64, model: UX410UAR)

Hello,

Sorry for coming late, but I had the same issue some days ago (never tested before):something like Guc not loading, while Huc did. Of course I hit this page, and some other without find a complete solution.

**But** after one day searching, I finaly make it work (!!) , and I'll try to explain what I did (I do not recommend to do the same, but I'll attach a patch (under MIT license, or whatever you need, just ask).

The problems:

1. when you download the kbl_guc_ver9_14.bin blob from Intel site, looks like the downloaded file is an .xml file in fact, but not a binary at all. Maybe the site has an issue ? (sorry, not a website specialist) // Can someone verify btw ?

2. IIRC Intel made kbl_guc_ver9_xy.bin for Kabylake, and I simply tried to make the kbl_guv_ver9_39.bin work.

Important: I found kbl_guv_ver9_39.bin blob there : http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/

What I did :

- I extracted kbl_guv_ver9_39.bin from linux-firmware_1.178_all.deb, and put it in /lib/firmware/i915

After that, I downloaded the most recent 4.15.0 kernel sources (on my LinuxMint 18.3) :

=> apt-get source linux-source-4.15.0 provided :

Réception de :1 http://ubuntu.mirrors.ovh.net/ftp.ubuntu.com/ubuntu xenial-updates/main linux-hwe 4.15.0-47.50~16.04.1 (dsc) [6 511 B]
Réception de :2 http://ubuntu.mirrors.ovh.net/ftp.ubuntu.com/ubuntu xenial-updates/main linux-hwe 4.15.0-47.50~16.04.1 (tar) [158 MB]

After I downloaded the sources, I copied initrd.img-4.15.0-34-generic as .config in the kernel tree, and I simply patched the following files (in drivers/gpu/drm/i915 :
- intel_guc_fw.c
- intel_uc.c

Comments :
- In the first one, I simply modified the binary version (changing KBL_FW_MINOR from 14 to 39)
- In the second one, I followed Robert M. Fosha advice (link : https://patchwork.kernel.org/patch/10877903/), allowing to avoind timeout and retry when trying to load the blob

=> see the attached patch.

For the record, my current /etc/modprobe.d/i915.conf contains :

````
options i915 enable_fbc=1 fastboot=1 enable_guc_loading=1 enable_guc_submission=1

````

Next step was to build the kernel, the Debian way (using make -j8 deb-pkg), and after installing the debs, I got everything working at the end, including the 9_34 version of kbl_guc blob :-) :

````
me@MyMachine ~ $ dmesg | grep i915
[ 2.018994] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 2.019493] [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_01.bin (v1.1)
[ 2.031452] [drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
[ 2.041847] [drm] GuC: Loaded firmware i915/kbl_guc_ver9_39.bin (version 9.39)
[ 2.058753] i915 0000:00:02.0: GuC submission enabled (firmware i915/kbl_guc_ver9_39.bin [version 9.39])
[ 2.059299] [drm] Initialized i915 1.6.0 20171023 for 0000:00:02.0 on minor 0
[ 2.519645] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 9.408643] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])

````

...

Read more...

Revision history for this message
ericb (eric-bachard) wrote :

Complement :

loading a previous version (from the same sources) of the kernel, but without being patched, seems to work:

me@MyMachine~ $ dmesg | grep i915
[ 2.016454] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 2.016960] [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_01.bin (v1.1)
[ 2.029825] [drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
[ 2.040335] [drm] GuC: Loaded firmware i915/kbl_guc_ver9_14.bin (version 9.14)
[ 2.054780] i915 0000:00:02.0: GuC submission enabled (firmware i915/kbl_guc_ver9_14.bin [version 9.14])
[ 2.055282] [drm] Initialized i915 1.6.0 20171023 for 0000:00:02.0 on minor 0
[ 2.514905] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 9.433635] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])

=> i915/kbl_guc_ver9_14.bin
=> i915/kbl_huc_ver02_00_1810.bin

So, IMHO, the Intel blob had no problem at all, and it was maybe simply an issue caused by the server on Intel site

uname -a : Linux MintPro 4.15.21 #2 SMP Thu Apr 4 00:38:03 CEST 2019 x86_64 x86_64 x86_64 GNU/Linux

HTH

--
qɔᴉɹə

L'association EducOOo : http://www.educoo.org (dérivé d'OpenOffice)

https://framagit.org/ericb/miniDart (logiciel Handball)

https://github.com/ebachard (logiciels variés)

Brad Figg (brad-figg)
tags: added: cscc
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.