Unable to get Intel Arc 380 GPU setup properly

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

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