Proxmox iGPU Passthrough only works on Windows guests

I wanted to passthrough UHD 630 to a DSM guest. I thought that PCIe passthrough in Proxmox has matured enough that it will be a straightforward task to assign my iGPU Intel UHD 630 to a Linux guest.

This was not the case.

I’m getting the following errors on a Linux and Mac guests:

Host error log

DMAR: [DMA Write NO_PASID] Request device [c7:00.0] fault addr 0x27af3000 [fault reason 0x05] PTE Write access is not set

DSM error log

[    4.093363] i915 0000:01:00.0: Invalid ROM contents
[    4.095707] [drm:gen9_set_dc_state [i915]] *ERROR* DC state mismatch (0x0 -> 0x2)
[    4.103321] [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[    5.754708] i915 0000:01:00.0: Resetting rcs0 after gpu hang
[    5.755644] i915 0000:01:00.0: Resetting bcs0 after gpu hang
[    5.756533] i915 0000:01:00.0: Resetting vcs0 after gpu hang
[    5.757376] i915 0000:01:00.0: Resetting vecs0 after gpu hang
[    7.707272] i915 0000:01:00.0: Resetting chip after gpu hang
[    7.708617] i915 0000:01:00.0: GPU recovery failed
[    7.716928] [drm] Initialized i915 1.6.0 20171222 for 0000:01:00.0 on minor 0
[    8.107294] i915 0000:01:00.0: fb0: inteldrmfb frame buffer device
[    8.702947] i915 0000:01:00.0: HDMI-A-1: EDID is invalid:
[   42.201199] i915 0000:01:00.0: HDMI-A-2: EDID is invalid:

Things I tried

Blacklisting iGPU on boot

I followed https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-passthrough-to-vm/#proxmox-configuration-for-igpu-full-passthrough with all the modification to Proxmox host, result are the same.

  • Blacklisting iGPU so the host won’t initialize it

Use a vbios file

I tried using a vbios romfile https://github.com/patmagauran/i915ovmfPkg to re-initiate the GPU, result are the same.

  • Copied the rom file to /usr/share/kvm/ and adding romfile=<vbios>.rom to hostpci0 in /etc/pve/qemu-server/<VMID>.conf

SR-IOV

I briefly considered using SR-IOV https://github.com/strongtz/i915-sriov-dkms but it looks like a lot of work. Host and guest has to support it. I have limited control over DSM.

Probably in the future if I have a use-case of passing through iGPU to a guest.

Other useful resources

  • https://www.reddit.com/r/VFIO/comments/innriq/successful_macos_catalina_with_intel_gvtg/
  • https://xpenology.com/forum/topic/69865-i915-driver-for-sa6400/
  • https://github.com/intel-gpu/intel-gpu-i915-backports
  • https://3os.org/
  • https://xpenology.com/forum/topic/63410-develop-and-refine-the-dva1622-loader/page/31/
  • https://hsve.org/passthrough/
  • https://forum.proxmox.com/threads/cannot-passthrough-nic-in-proxmox-to-opnsense-vm.119213/#post-517214
  • https://github.com/Aterfax/relax-intel-rmrr
  • https://github.com/brunokc/pve-kernel-builder#configuration


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *