I'm using Arch Linux x64 and my notebook hardware is: CPU: i7-6700HQ Video: Intel HD530 + Nvidia GTX 970m With kernel 4.4.5-ARCH the Skylake GuC firmware was properly loaded: cat /sys/kernel/debug/dri/1/i915_guc_load_status: GuC firmware status: path: i915/skl_guc_ver4.bin fetch: SUCCESS load: SUCCESS version wanted: 4.3 version found: 4.3 GuC status 0x800330ed: Bootrom status = 0x76 uKernel status = 0x30 MIA Core status = 0x3 Scratch registers: 0: 0x0 1: 0x0 2: 0x0 3: 0x5f5e100 4: 0x600 5: 0x0 6: 0x0 7: 0x0 8: 0x11 9: 0x0 10: 0x0 11: 0x0 12: 0x0 13: 0x0 14: 0x0 15: 0x0 but with kernel 4.5.2-ARCH the proprietary firmware is no longer loaded: GuC firmware status: path: (null) fetch: NONE load: NONE version wanted: 4.3 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 dmesg |grep -i skl [ 0.000000] ACPI: DMAR 0x000000005F8399E8 0000A8 (v01 INTEL SKL 00000001 INTL 00000001) [ 3.966878] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26) I have tried also: - recompiling kernel 4.5, but nothing changed; - compiling kernel 4.6-rc5, but nothing changed; - compiling kernel drm-intel-nightly, but nothing changed (this one is using skl_guc_ver6, which I have under /lib/firmware/i915) - compiling kernel 4.5 and 4.6-rc5 with skl_guc_ver6, but nothing changed - compiling linux-next, but nothing changed
Rodrigo, any advice here?
Please add drm.debug=14 module parameter and attach full dmesg from boot to loading the driver to checking /sys/kernel/debug/dri/1/i915_guc_load_status. What does 'ls -l /lib/firmware/i915/' say?
Created attachment 123298 [details] dmesg output Hi, the following is the output of "ls -l /lib/firmware/i915/": lrwxrwxrwx 1 root root 19 Apr 17 09:31 bxt_dmc_ver1.bin -> bxt_dmc_ver1_06.bin -rw-r--r-- 1 root root 5872 Apr 17 09:31 bxt_dmc_ver1_04.bin -rw-r--r-- 1 root root 5872 Apr 17 09:31 bxt_dmc_ver1_05.bin -rw-r--r-- 1 root root 8380 Apr 17 09:31 bxt_dmc_ver1_06.bin lrwxrwxrwx 1 root root 19 Apr 17 09:31 skl_dmc_ver1.bin -> skl_dmc_ver1_26.bin -rw-r--r-- 1 root root 8824 Apr 17 09:31 skl_dmc_ver1_23.bin -rw-r--r-- 1 root root 8928 Apr 17 09:31 skl_dmc_ver1_26.bin lrwxrwxrwx 1 root root 21 Apr 17 09:31 skl_guc_ver1.bin -> skl_guc_ver1_1059.bin -rw-r--r-- 1 root root 109636 Apr 17 09:31 skl_guc_ver1_1059.bin lrwxrwxrwx 1 root root 18 Apr 17 09:31 skl_guc_ver4.bin -> skl_guc_ver4_3.bin -rw-r--r-- 1 root root 128320 Apr 17 09:31 skl_guc_ver4_3.bin lrwxrwxrwx 1 root root 18 Apr 26 13:27 skl_guc_ver6.bin -> skl_guc_ver6_1.bin -rw-r--r-- 1 root root 129024 Apr 17 09:31 skl_guc_ver6_1.bin I have also checked the md5 (taken from 01.org) of skl_guc_ver4_3.bin and skl_guc_ver6_1.bin and they are both correct. Please find attached the dmesg output. The i915_guc_load_status didn't change: cat /sys/kernel/debug/dri/1/i915_guc_load_status GuC firmware status: path: (null) fetch: NONE load: NONE version wanted: 4.3 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 Thank you, Cheers
My first advice is that for these versions you shouldn't be worried about GuC not being loaded because it is not recommended and should stay disabled. I really believe that the behaviour in the 4.5 one is the expected one... and I wonder if something changed on the guc parameter from one version from another... So, what happen on the second case if you boot with i915.enable_guc_submission=1 ? But if you need that to get loaded I would suggest to get a more recent version of our driver: so my next question is what happens with drm-intel-nightly branch from https://cgit.freedesktop.org/drm-intel ? Thanks, Rodrigo.
Hi Rodrigo, with your method it works on both 4.5.2 and 4.6-rc5 version. May I ask you why is not recommended to load the GuC firmware? I thought it was needed for some specific graphics things. I don't really need it because I am able to use my notebook without any problem even though GuC is not loaded. My only concern was on the power management side but I think GuC is not responsible for that, am I right? (like, for example, reducing intel gpu freq/voltage/etc when not needed)
Hi Paolo, So in the end it seems that the bug is on the 4.3! ;) But I wouldn't care much unless we start seeing bugs on 4.3 than a guc disable patch should be backported to that old kernel version. So let's close this bug as a "wontfix". The 4.5.2 and 4.6-rc5 behaves as expected. So for this would be "NOTABUG". GuC is still under development and is not required for anything right now. When ready all the command submission will be handled by GuC scheduler so preemption will be possible. Also GuC will have power saving features taking care of frequencies and other power aspects. For now we are working to enabled the command execution through GuC instead of submiting commands using execlists and this is the first step. DMC in the other hand is already a required firmware if you are concerned about power savings. This can help you to have a proper runtime PM in place allowing deep Package-C states. Thanks, Rodrigo.
Hi Rodrigo, thank you very much for the exhaustive explanation :) Cheers
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.