Intel iGPU Passthrough from Proxmox to a VM

Intel iGPU Passthrough from Proxmox to a VM
Photo by Kevin Ku / Unsplash

First, you need to enable IOMMU in the Proxmox host. This allows for the PCI passthrough option to become available in the GUI.

nano /etc/default/grub

Then update the GRUB_CMDLINE_LINUX_DEFAULT option to look like this:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction initcall_blacklist=sysfb_init video=simplefb:off video=vesafb:off video=efifb:off video=vesa:off disable_vga=1 vfio_iommu_type1.allow_unsafe_interrupts=1 kvm.ignore_msrs=1 modprobe.blacklist=radeon,nouveau,nvidia,nvidiafb,nvidia-gpu,snd_hda_intel,snd_hda_codec_hdmi,i915"

Next, add the required kernel modules to /etc/modules:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Finally, update-grub and reboot!

Add the PCI device to the VM

You'll need to add a PCI device to the guest using the "Hardware" tab, "Add", and "PCI Device".

The modal that pops up is where we'll select the device with that identifier. Select it, and make sure "All Functions" and "Primary GPU" are ticked.

Finally, reboot the VM.

Mount the device to the required container

In the docker-compose file, mount the /dev/dri device to the container. 

services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    devices:
      - /dev/dri/:/dev/dri/