# [SOLVED] Skylake and integrated graphics weirdness

## Martux

Hi there.

I have zapped through journalctl and stumpled upon a message stating that the integrated graphics is missing firmware files. So I went the route and integrated them into the kernel:

i915/skl_guc_ver4.bin

 i915/skl_dmc_ver1.bin

It works, the firmware gets loaded BUT now I have weird screen flickering issues...

Funny thing is, without these firmware files, it just worked flawlessly before.

Now I am irritated, as I read that it is probably a good idea having them for energy management purposes and so. As this is an ultrabook, powersavings quite matter to me.

Can anybody shed light on my issue?

This is the graphics unit:

```

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 07) (prog-if 00 [VGA controller])

        Subsystem: Intel Corporation Skylake Integrated Graphics

        Flags: bus master, fast devsel, latency 0, IRQ 123

        Memory at de000000 (64-bit, non-prefetchable) [size=16M]

        Memory at c0000000 (64-bit, prefetchable) [size=256M]

        I/O ports at f000 [size=64]

        Expansion ROM at <unassigned> [disabled]

        Capabilities: [40] Vendor Specific Information: Len=0c <?>

        Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00

        Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-

        Capabilities: [d0] Power Management version 2

        Capabilities: [100] Process Address Space ID (PASID)

        Capabilities: [200] Address Translation Service (ATS)

        Capabilities: [300] Page Request Interface (PRI)

        Kernel driver in use: i915

```

----------

## albright

 *Quote:*   

> 
> 
> I have zapped through journalctl and stumpled upon a message stating that the integrated graphics is missing firmware files.

 

sorry I can't help with your problem, but I wonder how to verify if i915 firmware

is loading or not. I do NOT use systemd and nothing shows up (apparently)

in dmesg.

My problem is that in kernel >=4.4 my monitor blanks out randomly - the blanking

lasts about 5 seconds. When it happens it is on some input (Mouse or Keyboard).

This is with broadwell graphics Broadwell-U Integrated Graphics (rev 09)

EDIT: just tried kernel 4.5.0 - the video issues are worse (after going black the backlight

blinks every few seconds, eventually the desktop returns for a brief period before the

woeful cycle starts again. My system is odd: an intel broadwell i7 nuc with a displayport

splitter feeding dual monitors but still ...)

----------

## Martux

Like I said, I saw the system log complaining about missing firmware files (even if fully working). Can't restore now because it logs only 2 days.

After applying the firmware, it didn't complain anymore, that's it.

But every now and then, I get something like this and it doesn't look too good:

```

Mär 15 17:30:16 ultrabook kernel: WARNING: CPU: 3 PID: 811 at drivers/gpu/drm/i915/intel_uncore.c:599 hsw_unclaimed_reg_debug+0x64/0x80()

Mär 15 17:31:19 ultrabook kernel: [drm:intel_cpu_fifo_underrun_irq_handler] *ERROR* CPU pipe A FIFO underrun

```

This is only on the Skylake machine. The similar machin which is like a year old (pre-skylake) doesn't want any firmware... Seems like we all are having lots of fun with the Intel graphics   :Rolling Eyes: 

What I don't get is if there is any benefit whatsoever in loading that firmware or not.

----------

## HerbMillerJW

Power management for Linux on Skylake chipsets is in a really sad state right now. Try adding 

```
intel_pstate=disable
```

 to your kernel boot parameters and see if that makes the oddities go away while the firmware is loaded. This makes kernel fall back to ACPI power management, and it resolved all of my video issues (screenshots were hard-locking my system).

----------

## Wallsandfences

It's a pity that intel is either not willing or not capable to deliver a working driver/firmware for skylake. In theory, you should build 

```
skl_dmc_ver1.bin

skl_guc_ver1.bin

skl_guc_ver4.bin
```

in to your kernel and it should work. As I understand it, the dmc-part is responsible for proper power-settings inside the chip. Unfortunately, it doesn't work:

```
 dmesg | grep drm

[    0.302320] [drm] Initialized drm 1.1.0 20060810

[    0.303082] [drm] Found 128MB of eLLC

[    0.303491] [drm] Memory usable by graphics device = 4096M

[    0.303521] [drm] VT-d active for gfx access

[    0.303548] fb: switching to inteldrmfb from EFI VGA

[    0.303683] [drm] Replacing VGA console driver

[    0.309189] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).

[    0.309194] [drm] Driver supports precise vblank timestamp query.

[    0.309271] [drm:csr_load_work_fn] *ERROR* Unknown stepping info, firmware loading failed

[    0.309278] [drm:csr_load_work_fn] *ERROR* Failed to load DMC firmware, disabling rpm

[    0.350921] [drm] failed to retrieve link info, disabling eDP

[    0.353476] [drm] RC6 disabled, disabling runtime PM support

[    0.359732] [drm] Initialized i915 1.6.0 20151218 for 0000:00:02.0 on minor 0

[    0.466968] fbcon: inteldrmfb (fb0) is primary device

[    1.150636] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device

[    1.715303] [drm] RC6 off

```

So I have to include i915.enable_rc6=0 in the kernel boot parameters. Not good for laptops, of course.

The guc-part is working (Initialized i915 etc.), I saw error-messages in dmesg (or journatlctl) when I forgot to compile the firmware in on my first attempts.

This is with kernel-4.5.0-gentoo and intel nuc i5 skylake

----------

## Martux

Thank you for the explanation. That means, all we can do right now, is to wait until kernel development progresses further and at some point things will "just work"? Do I also regularly have to check if the firmware drivers will change and adjust the build in files accordingly?

----------

## albright

while attention is on intel video issues, my logs are

filled with this:

 *Quote:*   

> [drm:gen8_irq_handler] *ERROR* The master control interrupt lied (SDE)!

 

whatever does it mean?

----------

## Martux

I don't know if you can make something out of this?

https://www.spinics.net/lists/intel-gfx/msg81325.html

----------

## Strunzdesign

Hi,

to fix your firmware loading issue, just edit this file:

/usr/src/linux/drivers/gpu/drm/i915/intel_csr.c  (gentoo-sources-4.5.0-r1)

Add the missing stepping infos J and K at line 177:

static const struct stepping_info skl_stepping_info[] = {

        {'A', '0'}, {'B', '0'}, {'C', '0'},

        {'D', '0'}, {'E', '0'}, {'F', '0'},

        {'G', '0'}, {'H', '0'}, {'I', '0'},

        {'J', '0'}, {'K', '0'}

};

I don't remember where I found this, but it fixed firmware loading on my i5-6260U-NUC.

Regards,

Florian

----------

## Martux

Florian, thanks for your hint.

The firmware IS actually being loaded:

```

Apr 10 18:34:42 ultrabook kernel: [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26)

```

Changing the source file as you suggested and recompiling the kernel, unfortunately didn't change anything in the screens behaviour. Btw., it's flickering only after system suspend.

----------

## Wallsandfences

Hi Florian,

if I do htis, I get

```
[drm:csr_load_work_fn] *ERROR* Firmware has wrong CSS header length 2106439056 bytes

```

Rüdiger

 *Strunzdesign wrote:*   

> Hi,
> 
> to fix your firmware loading issue, just edit this file:
> 
> /usr/src/linux/drivers/gpu/drm/i915/intel_csr.c  (gentoo-sources-4.5.0-r1)
> ...

 

----------

## Martux

As skylake support seems to advance, some recent update in ~amd64 fixed this issue. No more flickering after resume for me  :Very Happy: 

Not exactly sure which combination of kernel, linux-firmware and xf86-video intel fixed it, though.

----------

