b-m-f
April 9, 2024, 11:11am
1
Hi,
I am having issues with getting my Intel GPU Arc A380 setup for video acceleration on a headless server.
Following nixos-hardware/common/gpu/intel/default.nix at 1e3b3a35b7083f4152f5a516798cf9b21e686465 · NixOS/nixos-hardware · GitHub and Accelerated Video Playback - NixOS Wiki I have the following config running:
{ nixpkgs, pkgs, ... }:
{
system.stateVersion = "23.11";
nixpkgs.config.allowUnfree = true;
fileSystems."/" =
{
device = "/dev/disk/by-uuid/uuid";
fsType = "ext4";
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/uuid";
fsType = "vfat";
};
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "i915" ];
boot.kernelModules = [ "kvm-amd" "nct6775" "k10temp" ];
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_7;
# ZFS
# https://openzfs.github.io/openzfs-docs/Getting%20Started/NixOS/index.html#installation
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.forceImportRoot = false;
networking.hostId = "some_id";
boot.zfs.extraPools = [ "one" "two" "three" ];
services.zfs.autoScrub = {
enable = true;
interval = "weekly";
};
services.zfs.trim.enable = true;
# # Hardware accelerated video
hardware.opengl = {
enable = true;
extraPackages = with pkgs; [
libvdpau-va-gl
intel-vaapi-driver
intel-media-driver
intel-compute-runtime
intel-ocl
];
};
environment.systemPackages = with pkgs; [
vim
lm_sensors
microcodeAmd
# For the GPU
libva-utils
clinfo
linux-firmware
];
}
Unfortunately when I execute vainfo
I only get the following output:
Trying display: wayland
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
Trying display: x11
error: can't connect to X server!
Trying display: drm
libva info: VA-API version 1.20.0
libva info: Trying to open /run/opengl-driver/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.20.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.3.5 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
Is there something obvious that I am missing or does anyone know how I can debug further?
EDIT:
Some additional info from the boot process, i’m not sure if the tainting is a problem and could not find out what it means:
[root@machine:/home/user]# journalctl -b | grep intel
Apr 09 13:07:23 machine kernel: intel_rapl_common: Found RAPL domain package
Apr 09 13:07:23 machine kernel: intel_rapl_common: Found RAPL domain core
Apr 09 13:07:23 machine kernel: snd_hda_intel 0000:0b:00.0: enabling device (0000 -> 0002)
Apr 09 13:07:23 machine kernel: snd_hda_intel 0000:0d:00.1: enabling device (0000 -> 0002)
Apr 09 13:07:23 machine kernel: snd_hda_intel 0000:0d:00.6: enabling device (0000 -> 0002)
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm:add_taint_for_CI [i915]] CI tainted:0x9 by intel_gt_init+0xb7/0x340 [i915]
Apr 09 13:07:24 machine kernel: snd_hda_intel 0000:0b:00.0: bound 0000:0a:00.0 (ops i915_audio_component_bind_ops [i915])
Apr 09 13:07:24 machine kernel: snd_hda_intel 0000:0b:00.0: Unknown capability 0
b-m-f
April 11, 2024, 5:13am
2
I just had some time to dig deeper and managed to find the issue and will leave the solution for anyone with similar issues.
Grepping for ‘i915’ was the key:
[user@machine:/home/user]# journalctl -b | grep i915
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] VT-d active for gfx access
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: vgaarb: deactivate vga console
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] Local memory IO size: 0x000000017c800000
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] Local memory available: 0x000000017c800000
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=none
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: Direct firmware load for i915/dg2_dmc_ver2_08.bin failed with error -2
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] Failed to load DMC firmware i915/dg2_dmc_ver2_08.bin. Disabling runtime power management.
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] *ERROR* GT0: GuC firmware i915/dg2_guc_70.bin: fetch failed -ENOENT
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] GT0: GuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 0.0.0
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] *ERROR* GT0: GuC initialization failed -ENOENT
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] *ERROR* GT0: Enabling uc failed (-5)
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] *ERROR* GT0: Failed to initialize GPU, declaring it wedged!
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm:add_taint_for_CI [i915]] CI tainted:0x9 by intel_gt_init+0xb7/0x340 [i915]
Apr 09 13:07:24 machine kernel: [drm] Initialized i915 1.6.0 20201103 for 0000:0a:00.0 on minor 0
Apr 09 13:07:24 machine kernel: snd_hda_intel 0000:0b:00.0: bound 0000:0a:00.0 (ops i915_audio_component_bind_ops [i915])
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] Cannot find any crtc or sizes
Apr 09 13:07:24 machine kernel: i915 0000:0a:00.0: [drm] Cannot find any crtc or sizes
Apr 09 13:07:24 machine kernel: mei_gsc i915.mei-gscfi.2560: FW not ready: resetting: dev_state = 2 pxp = 0
Apr 09 13:07:24 machine kernel: mei_gsc i915.mei-gscfi.2560: unexpected reset: dev_state = ENABLED fw status = 00000345 84670000 00000000 00000000 E0020002 00000000
Apr 09 13:07:24 machine kernel: mei_gsc i915.mei-gsc.2560: FW not ready: resetting: dev_state = 2 pxp = 2
Apr 09 13:07:24 machine kernel: mei_gsc i915.mei-gsc.2560: unexpected reset: dev_state = ENABLED fw status = 00000345 84670000 00000000 00000000 E0020002 00000000
The missing firmware can be enabled by setting:
hardware.enableRedistributableFirmware = true;
in the nix config.
After a reboot vainfo
produces:
Trying display: wayland
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
Trying display: x11
error: can't connect to X server!
Trying display: drm
libva info: VA-API version 1.20.0
libva info: Trying to open /run/opengl-driver/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.20.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.3.5 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSliceLP
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointEncSliceLP
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointEncSliceLP
VAProfileVP9Profile3 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointEncSliceLP
VAProfileHEVCMain12 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain422_12 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_10 : VAEntrypointVLD
VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_12 : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointEncSliceLP
VAProfileHEVCSccMain10 : VAEntrypointVLD
VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444 : VAEntrypointVLD
VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444_10 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP
1 Like