Failed on NUC runnig $bitbake core-image-sato-sdk-c testimage getting the following error messages: Central error: [ 0.738002] i915 0000:00:02.0: Direct firmware load for i915/skl_guc_ver4.bin failed with error -2 | Central error: [ 0.740089] [drm:i915_gem_init_hw] *ERROR* Failed to initialize GuC, error -5 (ignored) | Central error: [ 0.689288] [drm:i915_firmware_load_error_print] *ERROR* The driver is built-in, so to load the firmware you need to | Central error: [ 0.689270] i915 0000:00:02.0: Direct firmware load for i915/skl_dmc_ver1.bin failed with error -2 | Central error: [ 0.689280] [drm:i915_firmware_load_error_print] *ERROR* failed to load firmware i915/skl_dmc_ver1.bin (0) | Central error: [ 0.738015] [drm:intel_guc_ucode_init] *ERROR* Failed to fetch GuC firmware from i915/skl_guc_ver4.bin (error -2) | Central error: [ 0.737513] [drm] failed to retrieve link info, disabling eDP | Central error: [ 6.408821] udevd[361]: inotify_add_watch(6, /dev/loop0, 10) failed: No such file or directory | Central error: [ 0.738002] i915 0000:00:02.0: Direct firmware load for i915/skl_guc_ver4.bin failed with error -2 | Central error: [ 0.740089] [drm:i915_gem_init_hw] *ERROR* Failed to initialize GuC, error -5 (ignored) | Central error: [ 0.689288] [drm:i915_firmware_load_error_print] *ERROR* The driver is built-in, so to load the firmware you need to | Central error: [ 0.689270] i915 0000:00:02.0: Direct firmware load for i915/skl_dmc_ver1.bin failed with error -2 | Central error: [ 0.689280] [drm:i915_firmware_load_error_print] *ERROR* failed to load firmware i915/skl_dmc_ver1.bin (0) | Central error: [ 0.738015] [drm:intel_guc_ucode_init] *ERROR* Failed to fetch GuC firmware from i915/skl_guc_ver4.bin (error -2) | Central error: [ 0.737513] [drm] failed to retrieve link info, disabling eDP | Central error: [ 6.408821] udevd[361]: inotify_add_watch(6, /dev/loop0, 10) failed: No such file or directory
Created attachment 3029 [details] dparse logs
Created attachment 3030 [details] logs do_testimage
The i915 firmware load messages are because graphics on Skylake (and Broxton) require a firmware blob, and the kernel does not know about it on boot. I have tested setting CONFIG_EXTRA_FIRMWARE and CONFIG_EXTRA_FIRMWARE_DIR to point to the firmware blobs, and it fixes those error messages, but I do not believe its the appropriate solution, as we do not necessarily ship the firmware blobs.
Adding the Skylake i915 firmware to the initramfs also works and is likely the way to go. However, right now we only have the i915 firmware in the catch-all linux-firmware package, so it needs to be broken into its own package to make sure we don't expand the initramfs too much. I believe that Saul is working on this. For the firmware to load correctly on this NUC6 we also need to backport the following patch: https://lists.freedesktop.org/archives/intel-gfx/2016-January/086612.html
As it probably is not appropriate to pollute the initramfs for everybody, we are only adding the firmware blobs to intel-core* MACHINEs (provided by the meta-intel layer) for now. You will continue seeing this error with a genericx86-64 MACHINE. Patches have been submitted to the linux-yocto and meta-intel mailing lists to implement this, and they are awaiting review/integration.
Hmm, the fix in oe-core only works for our live images because we lose the initramfs once we install. I will need to revisit this.
Still reproducible on live image (booted not installed) on NUC 2.2 M2 http://autobuilder.yoctoproject.org/pub/releases/yocto-2.2_M2.rc1/machines/genericx86-64/core-image-sato-sdk-genericx86-64.hddimg
I have a fix coming but it will only be appropriate to put in meta-intel. In the mean time please whitelist this for genericx86* machines.
I whitelisted this for genericx86-64, but my fix for meta-intel did not work. Essentially I wanted to build the firmware into an intiramfs, and ship the kernel with the initramfs built in. The INITRAMFS_IMAGE_BUNDLE and INITRAMFS_IMAGE variables do indeed create an initramfs/kernel bundle, but they appear to not be put into the images, as there is a large size discrepancy between the kernel that ends up in the image and the initramfs bzImage that gets created and put in the deploy directory. I am able to hack kernel.bbclass to use the initramfs bundle if INITRAMFS_IMAGE_BUNDLE is set, but now I'm running into different kernel panics depending on what init I include in the initramfs. This could take a bit longer...
Someone had a smart idea of just building i915 as a module: https://lists.yoctoproject.org/pipermail/linux-yocto/2017-December/006703.html That should fix it.
The graphics firmware error messages should be fixed by the following: master/4.14: https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/commit/?id=5e02959f5cb81784b08cb7e4e027c058089c1ee7 master/4.9: https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/commit/?id=a17f3f4e9c61a9317a013b11ee36686d3a62c98f rocko/4.9: https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/commit/?h=rocko&id=e8d530f9e2f3d475f4490e8e3102d3ab4d457fd1