Unable to isolate iGPU and passthrough to VM

Hi team, any help would be appreciated. Recently purchased X12STH-F with Xeon E-2356G with 64G Crucial ECC. Hopes were to passthrough the 2356’s iGPU to a windows VM but unable to get it to work. I know I’ve probably messed something up but at first I enabled onboard graphics in Bios so Truenas could see the iGPU. I also enabled IOMMU in bios as well.

Error when attempting to isolate:

[EINVAL] gpu_settings.isolated_gpu_pci_ids: 0000:00:02.0 GPU pci slot(s) consists of devices which cannot be isolated from host.

After looking at a few posts I ran this, but not sure if it survives reboots or is a source of my problem:

midclt call system.advanced.update '{"kernel_extra_options": "i915.force_probe=4c90" }'

Truenas allows me to use the iGPU in an app and recognizes the device:

root@truenas[~]# lspci | grep -i vga                                   
00:02.0 VGA compatible controller: Intel Corporation RocketLake-S [UHD Graphics] (rev 04)
04:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 52)

Maybe helpful too? but I’m not sure what I’m looking at:

root@truenas[~]# dmesg | grep -i -e DMAR -e IOMMU
[    0.000000] Command line: BOOT_IMAGE=/ROOT/24.10-RC.2@/boot/vmlinuz-6.6.44-production+truenas root=ZFS=boot-pool/ROOT/24.10-RC.2 ro libata.allow_tpm=1 amd_iommu=on iommu=pt kvm_amd.npt=1 kvm_amd.avic=1 intel_iommu=on zfsforce=1 nvme_core.multipath=N i915.force_probe=4c90
[    0.006452] ACPI: DMAR 0x0000000097714000 000088 (v01 INTEL  EDK2     00000002      01000013)
[    0.006481] ACPI: Reserving DMAR table memory at [mem 0x97714000-0x97714087]
[    0.013838] Kernel command line: BOOT_IMAGE=/ROOT/24.10-RC.2@/boot/vmlinuz-6.6.44-production+truenas root=ZFS=boot-pool/ROOT/24.10-RC.2 ro libata.allow_tpm=1 amd_iommu=on iommu=pt kvm_amd.npt=1 kvm_amd.avic=1 intel_iommu=on zfsforce=1 nvme_core.multipath=N i915.force_probe=4c90
[    0.013890] DMAR: IOMMU enabled
[    0.045404] DMAR: Host address width 39
[    0.045405] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.045409] DMAR: dmar0: reg_base_addr fed90000 ver 4:0 cap 1c0000c40660462 ecap 69e2ff0505e
[    0.045411] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.045414] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[    0.045416] DMAR: RMRR base: 0x0000009b000000 end: 0x0000009f3fffff
[    0.045418] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.045419] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.045419] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.046984] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.287475] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
[    0.303305] iommu: Default domain type: Passthrough (set via kernel command line)
[    0.340276] DMAR: No ATSR found
[    0.340277] DMAR: No SATC found
[    0.340277] DMAR: IOMMU feature fl1gp_support inconsistent
[    0.340278] DMAR: IOMMU feature pgsel_inv inconsistent
[    0.340278] DMAR: IOMMU feature nwfs inconsistent
[    0.340279] DMAR: IOMMU feature pds inconsistent
[    0.340279] DMAR: IOMMU feature dit inconsistent
[    0.340279] DMAR: IOMMU feature eafs inconsistent
[    0.340280] DMAR: IOMMU feature prs inconsistent
[    0.340280] DMAR: IOMMU feature nest inconsistent
[    0.340280] DMAR: IOMMU feature mts inconsistent
[    0.340281] DMAR: IOMMU feature sc_support inconsistent
[    0.340281] DMAR: IOMMU feature dev_iotlb_support inconsistent
[    0.340282] DMAR: dmar0: Using Queued invalidation
[    0.340284] DMAR: dmar1: Using Queued invalidation
[    0.340520] pci 0000:00:02.0: Adding to iommu group 0
[    0.340535] pci 0000:00:00.0: Adding to iommu group 1
[    0.340542] pci 0000:00:01.0: Adding to iommu group 2
[    0.340548] pci 0000:00:08.0: Adding to iommu group 3
[    0.340555] pci 0000:00:12.0: Adding to iommu group 4
[    0.340564] pci 0000:00:14.0: Adding to iommu group 5
[    0.340568] pci 0000:00:14.2: Adding to iommu group 5
[    0.340580] pci 0000:00:15.0: Adding to iommu group 6
[    0.340585] pci 0000:00:15.1: Adding to iommu group 6
[    0.340590] pci 0000:00:15.3: Adding to iommu group 6
[    0.340601] pci 0000:00:16.0: Adding to iommu group 7
[    0.340606] pci 0000:00:16.1: Adding to iommu group 7
[    0.340611] pci 0000:00:16.4: Adding to iommu group 7
[    0.340616] pci 0000:00:17.0: Adding to iommu group 8
[    0.340625] pci 0000:00:19.0: Adding to iommu group 9
[    0.340630] pci 0000:00:19.1: Adding to iommu group 9
[    0.340651] pci 0000:00:1b.0: Adding to iommu group 10
[    0.340659] pci 0000:00:1b.7: Adding to iommu group 11
[    0.340678] pci 0000:00:1c.0: Adding to iommu group 12
[    0.340686] pci 0000:00:1c.4: Adding to iommu group 13
[    0.340695] pci 0000:00:1c.5: Adding to iommu group 14
[    0.340703] pci 0000:00:1d.0: Adding to iommu group 15
[    0.340714] pci 0000:00:1f.0: Adding to iommu group 16
[    0.340720] pci 0000:00:1f.4: Adding to iommu group 16
[    0.340726] pci 0000:00:1f.5: Adding to iommu group 16
[    0.340733] pci 0000:01:00.0: Adding to iommu group 17
[    0.340747] pci 0000:03:00.0: Adding to iommu group 18
[    0.340749] pci 0000:04:00.0: Adding to iommu group 18
[    0.340758] pci 0000:06:00.0: Adding to iommu group 19
[    0.340766] pci 0000:07:00.0: Adding to iommu group 20
[    0.340775] pci 0000:08:00.0: Adding to iommu group 21
[    0.340848] DMAR: Intel(R) Virtualization Technology for Directed I/O
[    0.593937] AMD-Vi: AMD IOMMUv2 functionality not available on this system - This is not a bug.

Can you set the aspeed vga controller as primary in the BIOS?

Also, whats the output of:

#!/bin/bash
for d in /sys/kernel/iommu_groups/*/devices/*; do
  n=${d#*/iommu_groups/*}; n=${n%%/*}
  printf 'IOMMU Group %s ' "$n"
  lspci -nns "${d##*/}"
done

the Aspeed as far as I understand is just for IPMI. I did check bios and didn’t see any way to select that video device for primary. There is an option to select primary video as “onboard” or “offboard” but I tried selecting that last night and whoopsie, had to clear cmos to get it to boot back into bios again - it froze at boot asking for me to connect the dsub to another input.

output:

IOMMU Group 0 00:02.0 VGA compatible controller [0300]: Intel Corporation RocketLake-S [UHD Graphics] [8086:4c9a] (rev 04)
IOMMU Group 1 00:00.0 Host bridge [0600]: Intel Corporation Device [8086:4c53] (rev 01)
IOMMU Group 10 00:1b.0 PCI bridge [0604]: Intel Corporation Tiger Lake-H PCIe Root Port [8086:43c0] (rev 11)
IOMMU Group 11 00:1b.7 PCI bridge [0604]: Intel Corporation Tiger Lake-H PCIe Root Port [8086:43c7] (rev 11)
IOMMU Group 12 00:1c.0 PCI bridge [0604]: Intel Corporation Tiger Lake-H PCIe Root Port [8086:43b8] (rev 11)
IOMMU Group 13 00:1c.4 PCI bridge [0604]: Intel Corporation Tiger Lake-H PCI Express Root Port #5 [8086:43bc] (rev 11)
IOMMU Group 14 00:1c.5 PCI bridge [0604]: Intel Corporation Device [8086:43bd] (rev 11)
IOMMU Group 15 00:1d.0 PCI bridge [0604]: Intel Corporation Tiger Lake-H PCI Express Root Port #9 [8086:43b0] (rev 11)
IOMMU Group 16 00:1f.0 ISA bridge [0601]: Intel Corporation C256 LPC/eSPI Controller [8086:438d] (rev 11)
IOMMU Group 16 00:1f.4 SMBus [0c05]: Intel Corporation Tiger Lake-H SMBus Controller [8086:43a3] (rev 11)
IOMMU Group 16 00:1f.5 Serial bus controller [0c80]: Intel Corporation Tiger Lake-H SPI Controller [8086:43a4] (rev 11)
IOMMU Group 17 01:00.0 Non-Volatile memory controller [0108]: Sandisk Corp WD Blue SN550 NVMe SSD [15b7:5009] (rev 01)
IOMMU Group 18 03:00.0 PCI bridge [0604]: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge [1a03:1150] (rev 06)
IOMMU Group 18 04:00.0 VGA compatible controller [0300]: ASPEED Technology, Inc. ASPEED Graphics Family [1a03:2000] (rev 52)
IOMMU Group 19 06:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
IOMMU Group 2 00:01.0 PCI bridge [0604]: Intel Corporation Device [8086:4c01] (rev 01)
IOMMU Group 20 07:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
IOMMU Group 21 08:00.0 Non-Volatile memory controller [0108]: Solidigm P41 Plus NVMe SSD (DRAM-less) [Echo Harbor] [025e:f1ab] (rev 03)
IOMMU Group 3 00:08.0 System peripheral [0880]: Intel Corporation Device [8086:4c11] (rev 01)
IOMMU Group 4 00:12.0 Serial controller [0700]: Intel Corporation Tiger Lake-H Integrated Sensor Hub [8086:43fc] (rev 11)
IOMMU Group 5 00:14.0 USB controller [0c03]: Intel Corporation Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller [8086:43ed] (rev 11)
IOMMU Group 5 00:14.2 RAM memory [0500]: Intel Corporation Tiger Lake-H Shared SRAM [8086:43ef] (rev 11)
IOMMU Group 6 00:15.0 Serial bus controller [0c80]: Intel Corporation Tiger Lake-H Serial IO I2C Controller #0 [8086:43e8] (rev 11)
IOMMU Group 6 00:15.1 Serial bus controller [0c80]: Intel Corporation Tiger Lake-H Serial IO I2C Controller #1 [8086:43e9] (rev 11)
IOMMU Group 6 00:15.3 Serial bus controller [0c80]: Intel Corporation Device [8086:43eb] (rev 11)
IOMMU Group 7 00:16.0 Communication controller [0780]: Intel Corporation Tiger Lake-H Management Engine Interface [8086:43e0] (rev 11)
IOMMU Group 7 00:16.1 Communication controller [0780]: Intel Corporation Device [8086:43e1] (rev 11)
IOMMU Group 7 00:16.4 Communication controller [0780]: Intel Corporation Device [8086:43e4] (rev 11)
IOMMU Group 8 00:17.0 SATA controller [0106]: Intel Corporation Device [8086:43d2] (rev 11)
IOMMU Group 9 00:19.0 Serial bus controller [0c80]: Intel Corporation Device [8086:43ad] (rev 11)
IOMMU Group 9 00:19.1 Serial bus controller [0c80]: Intel Corporation Device [8086:43ae] (rev 11)

The aspeed vga controller works as a regular vga card. You could hook up a monitor.

Your iommu groups looks fine, with only the igpu in its discreet group. also your xx6 chipset should support pass through.

Do you have another gpu for testing if passthrough works at all?

Yes I’ll throw in the Nvidia when I can get a bigger PSU in the server and report back. Thanks for your help!

Two things, I needed to check esxi for another reason so I took an opportunity to pass through the intel iGPU and it worked however after installing windows it recognized it but complained there was an error with the device under device manager (code 43). Next I moved the nvidia out of the desktop and put it into the server. Fun fact for anyone reading this, a full length Gpu blocks the powered sata ports which meant I couldn’t use my satadom for the boot drive. After booting a fresh install of electric eel I was able to isolate the nvidia with no issue. I also tried to isolate the intel iGPU as well which gave the same error I kept getting before.

Not sure where to go from here, is there something wrong with my processor?

edit I went on to create a windows VM with the nvidia and I receive this error “[EINVAL] gpu_settings.isolated_gpu_pci_ids: pci_0000_01_00_1, pci_0000_01_00_0 GPU pci slot(s) are not available or a GPU is not configured”

You wont be able to pass iGPU because Intel dont have proper drivers for Windows and wont have for that. I’am in the same boat… No more GVT-g for these processors as all went to GVT-d…

what OS did you decide to install instead. I want to do the gpu pass for a desktop but i’m having the same issue

I ended up abandoning the hunt for windows VM on TrueNAS. Wasn’t a deal breaker so it was sad but not that big of an issue. I use TN with Jailmaker only, no VMs

1 Like