[GUIDE] Intel Intergrated graphic Passthrough

I used q35. I'm pretty sure Windows 11 IoT will work the same way Good luck!

View attachment 75489
It didn't work for me... I have it configured as the following (I can connect using RDP just fine but code 43):
Code:
agent: 1
args: -device vfio-pci,host=00:02.0,x-igd-opregion=on
balloon: 0
bios: seabios
boot: order=scsi0;ide0;ide2;net0
cores: 2
cpu: host
efidisk0: local-lvm:vm-102-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
ide0: local:iso/virtio-win-0.1.229.iso,media=cdrom,size=522284K
ide2: local:iso/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso,media=cdrom,size=5024236K
machine: pc-q35-9.0
memory: 4096
meta: creation-qemu=9.0.2,ctime=1727542482
name: Windows-11-IoT-Enterprise-LTSC
net0: virtio=BC:24:11:32:35:E6,bridge=vmbr0
numa: 0
ostype: win11
scsi0: PVSH128GBStorage:102/vm-102-disk-0.qcow2,aio=threads,cache=writethrough,discard=on,iothread=1,size=48G,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=97cd0d4e-eef5-41f8-9d6b-5836daefaec2
sockets: 1
tpmstate0: local-lvm:vm-102-disk-1,size=4M,version=v2.0
vga: none
vmgenid: d2ca8754-e21e-4255-a78e-23e1bd9b9c92
remmina_Windows-11-IoT-Enterprise-LTSC_192.168.1.108_20241013-083102.png
 
Last edited:
It didn't work for me... I have it configured as the following (I can connect using RDP just fine but code 43):

You have a different iGPU. Make sure your vfio.conf settings are correctly set to your iGPU vendor ID and the same goes for the arguments line in the vm config file.
 
I have an Asrock Z87 Extreme4 with a Core i5-4690K // HD Graphics 4600 and I'm running Proxmox 8.2. I've managed to passthrough the iGPU in a Windows 10 x64 using SeaBIOS (sound not working though) but I have a few questions that I would like to clarify. Let me share what I did first:

PREPARATION
----------------------

- Edit grub:


cp /etc/default/grub /etc/default/grup.bkp
nano /etc/default/grub

Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off,simplefb:off"

- Update grub:

Code:
update-grub

- Edit VFIO Modules:

nano /etc/modules

Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

- Type these commands:

Code:
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
 
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf

- Blacklist Drivers

nano /etc/modprobe.d/blacklist.conf


Code:
blacklist i915
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi

- Identify my iGPU:
lspci -v

Code:
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
                Subsystem: ASRock Incorporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
                Flags: fast devsel, IRQ 16, IOMMU group 0
                Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
                Memory at e0000000 (64-bit, prefetchable) [size=256M]
                I/O ports at f000 [size=64]
                Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
                Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
                Capabilities: [d0] Power Management version 2
                Capabilities: [a4] PCI Advanced Features
                Kernel driver in use: vfio-pci
                Kernel modules: i915

- Find out your iGPU vendor ID

lspci -n -s 00:02

Code:
00:02.0 0300: 8086:0412 (rev 06)

- Add the iGPU vendor ID to the VFIO

Code:
echo "options vfio-pci ids=8086:0412"> /etc/modprobe.d/vfio.conf


- Run this command:
Code:
update-initramfs -u

- reboot


VM CREATION
---------------------

- Use SeaBIOS

- Display: Default (it will not boot without it).

- Do not add the iGPU (PCI) manually. Instead, add it in the config file (in my case, /etc/pve/qemu-server/104.conf) with this line:

Code:
args: -device vfio-pci,host=00:02.0,x-igd-opregion=on


These are my questions:

- How do I make my HDMI audio work?

- My VM seems to be freezing at boot if I set the Display option to none (vga: none in config file). Why? I tried to access it through remote desktop but it does not go through.

- I've tried the OVMF (UEFI) route but it didn't work for me. I just could not get rid of the infamous 43 error code. My settings were the same as the ones I've shared here, except for the VM config, which had this instead:

Code:
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
cpu: host,hidden=1,flags=+pcid

I have tried booting it with the Display Option in none and the machine booted without issues but the 43 error did not go away.

- When it comes to Linux and macOS guests, the configuration is the same or are there specific configurations for those operating systems?

----------
EDIT

Regarding the audio, I did the following to at least get audio from the audio jack and it worked:

- I added the High Definition Audio Controller (00:1b.0):

vfio.conf

Code:
options vfio-pci ids=8086:0412,8086:0c0c, 8086:8c20


VM Config file arguments

Code:
args: -device vfio-pci,host=00:02.0,x-igd-opregion=on -device vfio-pci,host=00:03.0 -device vfio-pci,host=00:1b.0

Now I can see 2 audio devices in my Device manager but I still get no sound through my HDMI:

  • High Definition Audio Device.
  • Intel Audio Display.
Hello, I have an MSI Z97 Gaming 3 with an Intel I5 4690k as well, running Proxmox 9.1.4. After reproducing what you did in "Preparation", I am left with no mention whatsoever of my processor in the output of lspci -v. I've been struggling with passing my Intel iGPU to my Ubuntu VM for media transcoding using quicksync, as no guide seem to consider the possibility that the iGPU may not even appear as a VGA Compatible controller in the first place :p

[UPDATE - SOLVED]
For anyone still struggling as I did :
- Go to your BIOS settings, look for something called "Multi-Monitor" "Integrated Graphics" in Advanced Settings.
- If you get to choose between IGP and PEG, set it to IGP (Integrated Graphics Device)
- Save and reboot. Use a monitor with HDMI plugged to your motherboard (not your GPU) to check that the setting was applied (your monitor should turn on now that you have selected Integrated Graphics for boot)
- In Proxmox shell, lspci -v should now show your iGPU.
 
Last edited: