Setting up Intel GPU passthrough. Is it even possible?

Hi Everyone,

I new on this forum so I would like to welcome everyone.

I’ve posted this on Manjaro forum but I didn’t get any answer. I hope I get some here it here.

I’m trying passthrough Intel GPU to QEMU/KVM with OVMF but seem to I’m getting nowhere with accessing the iGPU on VM.
My CPU i5-4690K seem supports VT-d, not sure if Mainboard ASUS H97M-Plus does.
Basically iGPU passthrough would be fine for me as I’m playing mostly on Steam on linux.

dmesg | grep -e DMAR -e IOMMU output:

[ 0.050589] ACPI: DMAR 0x00000000C8B3BEB0 0000B8 (v01 INTEL BDW 00000001 INTL 00000001)
[ 0.196062] DMAR: IOMMU enabled
[ 0.255864] DMAR: Host address width 39
[ 0.255865] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.255868] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[ 0.255869] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.255871] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c20660462 ecap f010da
[ 0.255871] DMAR: RMRR base: 0x000000c8ad7000 end: 0x000000c8ad7fff
[ 0.255872] DMAR: RMRR base: 0x000000cb000000 end: 0x000000cf1fffff
[ 0.255873] DMAR-IR: IOAPIC id 8 under DRHD base 0xfed91000 IOMMU 1
[ 0.255874] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.255874] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.256258] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.632445] DMAR: No ATSR found
[ 0.632469] DMAR: dmar0: Using Queued invalidation
[ 0.632474] DMAR: dmar1: Using Queued invalidation
[ 0.632520] DMAR: Setting RMRR:
[ 0.632574] DMAR: Setting identity map for device 0000:00:02.0 [0xcb000000 - 0xcf1fffff]
[ 0.632903] DMAR: Setting identity map for device 0000:00:14.0 [0xc8ad7000 - 0xc8ad7fff]
[ 0.632936] DMAR: Setting identity map for device 0000:00:1a.0 [0xc8ad7000 - 0xc8ad7fff]
[ 0.632970] DMAR: Setting identity map for device 0000:00:1d.0 [0xc8ad7000 - 0xc8ad7fff]
[ 0.632982] DMAR: Prepare 0-16MiB unity mapping for LPC
[ 0.633002] DMAR: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
[ 0.633119] DMAR: Intel® Virtualization Technology for Directed I/O

I followed Arch wiki and other sources to setup this but can’t get iGPU working or either don’t know if this is possible.
Only I was able to do was display Ubuntu boot logo and after that was green lines horizontal garbage.
Windows 7 installs iGPU driver no error, and Windows 10 installs but it displays code 43 error but only I get is second screen to light up, but nothing on it.

Even tried rom-parser but it didn’t work displaying
sudo echo 1 > /sys/bus/pci/devices/0000:00:02.0/rom
bash: /sys/bus/pci/devices/0000:00:02.0/rom: Permission denied

cat /sys/bus/pci/devices/0000:00:02.0/rom > /tmp/image.rom
cat: ‘/sys/bus/pci/devices/0000:00:02.0/rom’: No such file or directory

So there is what I done so far:
GRUB cmd line: libata.noacpi=1 intel_iommu=on vfio-pci.ids=8086:0412,8086:0c0c modprobe.blacklist=i915 intremap=no_x2apic_optout
I was adding every of above one by one, no difference. I’ve tried also iommu=pt, pci-stub instead vfio-pci

/etc/modprobe.d/vfio.conf contains options vfio-pci ids=8086:0412,8086:0c0c

/etc/mkinitcpio.conf contains MODULES=”vfio_pci vfio vfio_iommu_type1 vfio_virqfd”
and HOOKS=(… modconf …)

/etc/modprobe.d/mhwd-gpu.conf added blacklist i915

IO Groups for iGPU look fine:

….
IOMMU Group 2 00:02.0 Display controller [0380]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
IOMMU Group 3 00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
….
but with Nvidia I don’t have so much luck:
….
IOMMU Group 1 00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller [8086:0c01] (rev 06)
IOMMU Group 1 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)
IOMMU Group 1 01:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
….

I’ve tried ACS override patch by installing linux-vfio & linux-vfio-lts but LightDM failed to load.
I’m not sure but I think I don’t need ACS override patch for iGPU anyway.

Despite all that I having big problem booting from UEFI. Basically GRUB doesn’t show up at boot.
To get it back I need to boot from boot menu but this it do not appear every time, however I don’t see any difference between Legacy Boot and EFI, in both scenarios VM behave the same.
OVMF seem to work under legacy installing system – I got test Windows 10 installed on GUID partition.

Any ideas what I can try?

as far as i know passing through the IGPU is not possible as it is automatically initialized at boot up. and not easy to stop that with out customizing the grub loader. as far as the error 43 code it is the standard Nvida problem that you have to trick into thinking that it is running native. there are posts around that tell you how to do this a bit of searching should yield results.

Thank you for your reply, however I would normally agree but there is one thing I can’t explain. Please see attached picture.


Monitor on the left is connected to iGPU and it displays only Ubuntu splash screen.
BIOS is set to NVIDIA PCI-e card as primary.
Error code 43 is on Intel GPU driver as NVIDIA is not passed-through and is used on Linux host.

And this is what it displays later:

Kind regards

I did some testing yet, tried all the same with extra PCIex GPU, and I now I have to agree that it is not possible.

it is possible.
You need to unassign the intel igd from the x completely.
Don’t ask me where, i don’t remember. Likely xconfig or something.

It shouldn’t display anything at all, and then you should be able to assign it.
Please do note, not all intel CPU’s support igp virtualizations gvt-d.


Yes, my CPU doesn’t support that, besides I think using second PCIex card would be the best option here, and I’ve purchased card. Some test I’ve done, suggest all will work as designed.

Thank you all for help.