Intel Arc B580 on 26 Beta 3 - enumeration failure after unsuppored D3cold & workaround for B580

I encountered a reproducible Intel Arc B580 issue on TrueNAS 26.0.0-BETA.3 with kernel 6.18.42-production+truenas.

Hardware:

  • Intel Core i5-14600K
  • MSI PRO Z790-A MAX WIFI, latest M.B0 BIOS
  • ASRock Intel Arc B580 (8086:e20b)

The B580 initializes normally, but about 25 seconds after boot its PCIe hierarchy enters D3cold and fails to resume:

pcieport 0000:00:01.0: retraining failed
pcieport 0000:00:01.0: Data Link Layer Link Active not set in 100 msec
xe 0000:03:00.0: [drm] *ERROR* DC state mismatch
snd_hda_intel 0000:04:00.0: CORB reset timeout#2
xe 0000:03:00.0: Runtime PM usage count underflow!

TrueNAS then fails to enumerate any GPUs because its PCI bridge scan receives EINVAL:

truenas_pylibvirt/utils/iommu.py", line 86
    secondary = int(f.read().strip())
OSError: [Errno 22] Invalid argument

Updating the motherboard BIOS and disabling ASPM/L1 did not help.

This kernel option works around the issue:

xe.dmc_firmware_path=/dev/null

I applied it through TrueNAS Kernel Extra Options. After reboot, the B580 remains in D0, its PCI bridges remain readable, and both device.get_gpus and app.gpu_choices successfully return the B580 and UHD 770.

sudo midclt call system.advanced.update \
  '{"kernel_extra_options":"xe.dmc_firmware_path=/dev/null"}'

The workaround disables DMC/runtime PM and therefore increases idle power. The kernel also notes that TrueNAS provides B580 GuC firmware 70.40.2, while 70.49.4 is recommended. There may be some power state handling fixes there, looking forward to an update when TrueNAS bumps its kernel / dependencies.

pretty rough that it falls into d3cold and breaks the gpu enum.

ur xe.dmc_firmware_path=/dev/null midclt line is the right stick for now. id also:

-midclt call system.advanced.config
-ls /lib/firmware/xe /lib/firmware/i915 2>/dev/null | rg -i ‘guc|dmc|70.’
-journalctl -b -k | rg -i ‘xe |dmc|d3cold|retraining|guc’

and park a jira w/ the 70.40.2 vs 70.49.4 note so that firmware bump doesnt get lost

Subsequently, after isolating the B580 and passing it through to a VM, shutting down the VM caused the GPU and its internal PCIe switch to enter the broken D3cold state again. Adding the following kernel option prevented the issue during repeated VM start/stop tests. A host reboot is required:

midclt call system.advanced.update \
  '{"kernel_extra_options":"xe.dmc_firmware_path=/dev/null vfio-pci.disable_idle_d3=1"}'

After rebooting, verify that it is active:

cat /sys/module/vfio_pci/parameters/disable_idle_d3

Expected output: Y

Did you use Report a Bug? I would add all that info to your ticket and post the ticket number back here, if you did.

Ticket was closed with
"Unsupported development tools capable of modifications to the base operating system have been enabled in this configuration. We are closing this ticket as it is outside the scope for effective issue investigation.

To focus investigation on finding and fixing issues with the default TrueNAS OS, please open a new ticket if you are able to reproduce the behavior on a TrueNAS install that has not installed OS development tools."