# Failed to load DMC firmware i915/kbl_dmc_ver1_04. [Resolved]

## y351

Hi,

I get an error about this error from the boot.

```

[    0.689615] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_04.bin failed with error -2

[    0.689617] i915 0000:00:02.0: Failed to load DMC firmware i915/kbl_dmc_ver1_04.bin. Disabling runtime power management.

```

It existe :

```
 ll /lib/firmware/i915/kbl_dmc_ver1_04.bin
```

```

-rw-r--r-- 1 root root 8840 17 sept. 10:42 /lib/firmware/i915/kbl_dmc_ver1_04.bin

```

I can not say whether it is serious or not.

```

[    0.685015] [drm] Replacing VGA console driver

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

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

[    0.689572] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem

[    0.689615] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_04.bin failed with error -2

[    0.689617] i915 0000:00:02.0: Failed to load DMC firmware i915/kbl_dmc_ver1_04.bin. Disabling runtime power management.

[    0.689619] i915 0000:00:02.0: DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915

[    0.701351] [drm] Initialized i915 1.6.0 20180514 for 0000:00:02.0 on minor 0

[    0.704860] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)

```

```
emerge --info
```

```

Portage 2.3.49 (python 2.7.15-final-0, default/linux/amd64/17.0/systemd, gcc-7.3.0, glibc-2.26-r7, 4.18.7-gentoo x86_64)

=================================================================

System uname: Linux-4.18.7-gentoo-x86_64-Intel-R-_Core-TM-_i5-7200U_CPU_@_2.50GHz-with-gentoo-2.4.1

KiB Mem:     8025508 total,    116396 free

KiB Swap:    8388604 total,   8387580 free

Timestamp of repository gentoo: Mon, 17 Sep 2018 08:00:01 +0000

Head commit of repository gentoo: 859d78589eeb645ed87ef2a74e2cfea260381bb2

sh bash 4.4_p12

ld GNU ld (Gentoo 2.30 p2) 2.30.0

ccache version 3.3.4 [enabled]

app-shells/bash:          4.4_p12::gentoo

dev-java/java-config:     2.2.0-r4::gentoo

dev-lang/perl:            5.24.3-r1::gentoo

dev-lang/python:          2.7.15::gentoo, 3.5.5::gentoo, 3.6.5::gentoo

dev-util/ccache:          3.3.4-r1::gentoo

dev-util/cmake:           3.9.6::gentoo

dev-util/pkgconfig:       0.29.2::gentoo

sys-apps/baselayout:      2.4.1-r2::gentoo

sys-apps/openrc:          0.34.11::gentoo

sys-apps/sandbox:         2.13::gentoo

sys-devel/autoconf:       2.13::gentoo, 2.69-r4::gentoo

sys-devel/automake:       1.11.6-r3::gentoo, 1.15.1-r2::gentoo

sys-devel/binutils:       2.30-r2::gentoo

sys-devel/gcc:            7.3.0-r3::gentoo

sys-devel/gcc-config:     1.8-r1::gentoo

sys-devel/libtool:        2.4.6-r3::gentoo

sys-devel/make:           4.2.1-r4::gentoo

sys-kernel/linux-headers: 4.17::gentoo (virtual/os-headers)

sys-libs/glibc:           2.26-r7::gentoo

Repositories:

gentoo

    location: /usr/portage

    sync-type: rsync

    sync-uri: rsync://rsync.gentoo.org/gentoo-portage

    priority: -1000

    sync-rsync-verify-jobs: 1

    sync-rsync-verify-metamanifest: yes

    sync-rsync-extra-opts:

    sync-rsync-verify-max-age: 24

pixlra

    location: /var/lib/layman/pixlra

    masters: gentoo

    priority: 50

swegener

    location: /var/lib/layman/swegener

    masters: gentoo

    priority: 50

zugaina

    location: /var/lib/layman/zugaina

    masters: gentoo

    priority: 50

ACCEPT_KEYWORDS="amd64"

ACCEPT_LICENSE="* -@EULA"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=native -O2 -fforce-addr -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /opt/davmail-4.8.0/conf /usr/share/gnupg/qualified.txt /var/rancid/.cloginrc"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo"

CXXFLAGS="-march=native -O2 -fforce-addr -pipe"

DISTDIR="/usr/portage/distfiles"

EMERGE_DEFAULT_OPTS="--jobs=4 --load-average=4.0 --keep-going=y --with-bdeps=y"

ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"

FCFLAGS="-O2 -pipe"

FEATURES="assume-digests binpkg-logs buildpkg ccache config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans unprivileged userfetch userpriv usersandbox usersync xattr"

FFLAGS="-O2 -pipe"

GENTOO_MIRRORS="http://distfiles.gentoo.org"

LANG="fr_FR.utf8"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

MAKEOPTS="-j5"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"

PORTAGE_TMPDIR="/var/tmp"

USE="X acl amd64 berkdb bindist bzip2 cli crypt cryptsetup cxx dri ffmpeg fortran gdbm gnutls iconv ipv6 jpg libtirpc logrotate mmx modplug modules multilib ncurses nls nptl openmp pam pcre perl png pulseaudio python readline seccomp secure_delete sse sse2 ssl systemd tcpd udev unicode wavpack webrsync-gpg xattr xml zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon plan sheets stage words" COLLECTD_PLUGINS="load memory syslog" CPU_FLAGS_X86="mmx sse sse2 mmxext" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php7-0" POSTGRES_TARGETS="postgres9_5 postgres10" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_6" QEMU_SOFTMMU_TARGETS="alpha arm i386 mips mips64 mips64el mipsel ppc ppc64 s390x sh4 sh4eb sparc sparc64 x86_64" QEMU_USER_TARGETS="alpha arm armeb i386 mips mipsel ppc ppc64 ppc64abi32 s390x sh4 sh4eb sparc sparc32plus sparc64 x86_64" RUBY_TARGETS="ruby23" USERLAND="GNU" VIDEO_CARDS="intel i915" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

[Moderator edit: changed [quote] tags to [code] tags to preserve output layout; removed spurious extra close-quote tag. -Hu]Last edited by y351 on Tue Sep 18, 2018 10:14 am; edited 1 time in total

----------

## Anon-E-moose

If you use an initramfs 

From an archlinux forum reply

 *Quote:*   

> The firmware for built-in modules is loaded from initramfs. You need to edit your /etc/mkinitcpio.conf and add the /usr/lib/firmware/i915/kbl_dmc_ver1_04.bin to the FILES array there. Once done, regenerate your initramfs by running mkinitcpio.

 

----------

## NeddySeagoon

y351,

```
[ 0.689615] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_04.bin failed with error -2
```

At that time, root is not yet mounted so /lib/firmware/ cannot be read.

With i915 built into the kernel, all the required firmware must be included in the kernel too.

There is an example of how to do this on the wiki

----------

## bunder

https://wiki.gentoo.org/wiki/Linux_firmware

The wiki article isn't 100% clear how to install the firmware into the kernel, but you'll want something like this...

```
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-9e-09 i915/kbl_dmc_ver1.bin i915/kbl_dmc_ver1_01.bin i915/kbl_dmc_ver1_04.bin i915/kbl_guc_ver9_14.bin i915/kbl_guc_ver9_39.bin i915/kbl_huc_ver02_00_1810.bin intel/dsp_fw_kbl.bin intel/dsp_fw_kbl_v2042.bin intel/dsp_fw_kbl_v2630.bin intel/dsp_fw_kbl_v3266.bin intel/dsp_fw_kbl_v3420.bin intel/ibt-hw-37.8.bseq intel/ibt-hw-37.8.10-fw-22.50.19.14.f.bseq iwlwifi-3168-21.ucode iwlwifi-3168-22.ucode iwlwifi-3168-27.ucode iwlwifi-3168-29.ucode rtl_nic/rtl8411-1.fw rtl_nic/rtl8411-2.fw"
```

----------

## y351

Thanks for yours advices.

Yes, i use initramfs to boot from crypted device : so, in fact, from the initramfs boot, the root mount was not been mounted yet...

I did not remember whether i build into the kernel with the firmware...

This error is new...and since when compiling new kernel, i use to do 

```
make olddefconfig
```

to import the old config kernel, i did not noticed any sort of error from before.

Right now, when checking, the option of the kernel here is :

```
Build named firmware blobs into the kernel binary
```

So, it must be better to define into this option, the path of the firmware : /lib/firmware

What do you think about this option ?Last edited by y351 on Mon Sep 17, 2018 3:15 pm; edited 1 time in total

----------

## NeddySeagoon

y351,

When you put a file name in there, you will get a new option appear for a directory to prepend to the file names.

That's the method though.

For intel video, it comes with a warning that built in may prevent suspend to RAM from working.

----------

## P.Kosunen

 *bunder wrote:*   

> The wiki article isn't 100% clear how to install the firmware into the kernel, but you'll want something like this...

 

```
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-8e-09 i915/kbl_dmc_ver1_04.bin"

CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
```

I had same error, just added i915/kbl_dmc_ver1_04.bin to menuconfig Device Drivers -> Generic Driver Options -> Firmware loader -> Build named firmware blobs into the kernel binary and its gone.

----------

## y351

Yes, after compiling again with the suggestion above, and reboot, the failed message is gone.

Thanks again for your return.

----------

## buratino2015

 *NeddySeagoon wrote:*   

> 
> 
> With i915 built into the kernel, all the required firmware must be included in the kernel too.
> 
> There is an example of how to do this on the wiki
> ...

 

I follow the article but I still have the same issue.

So in my kernel config I checked item "Include in-kernel firmware blobs in kernel binary" and specified required blobs in the item "External firmware blobs to build into the kernel binary".

But dmesg still report the error (I've also checked the item "Driver Core verbose debug messages" for detailed log):

```
1926 [    0.219836] firmware_class: __allocate_fw_buf: fw-i915/kbl_dmc_ver1_01.bin buf=ffff880424322380$

1927 [    0.219841] i915 0000:00:02.0: loading /lib/firmware/updates/4.14.65-gentoo-HuC/i915/kbl_dmc_ver1_01.bin failed with error -2$                   

1928 [    0.219843] i915 0000:00:02.0: loading /lib/firmware/updates/i915/kbl_dmc_ver1_01.bin failed with error -2$

1929 [    0.219845] i915 0000:00:02.0: loading /lib/firmware/4.14.65-gentoo-HuC/i915/kbl_dmc_ver1_01.bin failed with error -2$

1930 [    0.219846] i915 0000:00:02.0: loading /lib/firmware/i915/kbl_dmc_ver1_01.bin failed with error -2$

1931 [    0.219847] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_01.bin failed with error -2$

1932 [    0.219851] firmware_class: __fw_free_buf: fw-i915/kbl_dmc_ver1_01.bin buf=ffff880424322380 data=          (null) size=0$

1933 [    0.219852] i915 0000:00:02.0: Failed to load DMC firmware [https://01.org/linuxgraphics/downloads/firmware], disabling runtime power management.

```

I understand that blob is not found because the file system is not mounted yet. But I can't understand why kernel does search for the blob on the file system.

As far as I understand the blob must be built into the kernel.

Can anybody help me?

----------

## CondeProlog

 *buratino2015 wrote:*   

>  *NeddySeagoon wrote:*   
> 
> With i915 built into the kernel, all the required firmware must be included in the kernel too.
> 
> There is an example of how to do this on the wiki
> ...

 

It seems the kernel try to load the firmware but the blob isn't there (data=(null) size=0).

Also your path starts with "fw-i915/..." and the linux-firmware package installs the related files to "i915/..." so you should recheck that before building it.

To avoid this hassle build the i915 driver as a module, it will automatically load the right version for your GPU (the path is hardcoded in the driver source) from the file system.

----------

## buratino2015

 *CondeProlog wrote:*   

> 
> 
> It seems the kernel try to load the firmware but the blob isn't there (data=(null) size=0).
> 
> Also your path starts with "fw-i915/..." and the linux-firmware package installs the related files to "i915/..." so you should recheck that before building it.
> ...

 

Thnx for the reply. It help me a lot.

A root cause of the issue was in the included blobs.

I typed by mistake blobs for 'coffe lake' cpu, but my cpu was 'kaby lake'. So kernel could not find firmware for my cpu.

----------

