Bug 95161 - skl_guc is not loaded
Summary: skl_guc is not loaded
Status: CLOSED WONTFIX
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: XOrg git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Rodrigo Vivi
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-26 22:03 UTC by Paolo Stivanin
Modified: 2017-07-24 22:41 UTC (History)
1 user (show)

See Also:
i915 platform: SKL
i915 features:


Attachments
dmesg output (111.28 KB, text/plain)
2016-04-27 10:15 UTC, Paolo Stivanin
no flags Details

Description Paolo Stivanin 2016-04-26 22:03:42 UTC
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
Comment 1 yann 2016-04-27 06:47:39 UTC
Rodrigo, any advice here?
Comment 2 Jani Nikula 2016-04-27 08:35:34 UTC
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?
Comment 3 Paolo Stivanin 2016-04-27 10:15:26 UTC
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
Comment 4 Rodrigo Vivi 2016-04-28 00:16:28 UTC
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.
Comment 5 Paolo Stivanin 2016-04-28 07:04:46 UTC
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)
Comment 6 Rodrigo Vivi 2016-04-28 16:00:50 UTC
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.
Comment 7 Paolo Stivanin 2016-04-28 17:11:50 UTC
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.