GPU Passthrough on Proxmox: Complete Setup Guide

gpu passthrough proxmox - custom-gpu-passthrough-featured.png

GPU passthrough on Proxmox VE gives a VM direct access to a physical graphics card —
essential for AI/ML training, CAD workstations, video transcode, and gaming VMs. Proxmox uses KVM +
VFIO to bind the GPU away from the host and attach it via hostpci.

This complete guide covers Intel and AMD hosts, NVIDIA and AMD consumer cards, Windows and Linux guests,
and the fixes for the most common failure modes (Code 43, black screen, IOMMU group conflicts).

Requirements

  • CPU and motherboard with Intel VT-d or AMD-Vi enabled in BIOS
  • GPU in an isolated IOMMU group (or ACS patch as last resort — document security tradeoff)
  • Second GPU, integrated graphics, or headless host access (IPMI) for Proxmox host console
  • For NVIDIA: often need vGPU workaround flags or proper ROM/bar settings for consumer cards
  • Guest VM: OVMF (UEFI) + Q35 machine type recommended for Windows

Note: An older short guide exists at
/proxmox-pci-passthrough/ — this is the full walkthrough.

Step 1: Enable IOMMU in BIOS and GRUB

In BIOS enable SVM/IOMMU (AMD) or VT-d (Intel). On the Proxmox host edit /etc/default/grub: add intel_iommu=on iommu=pt or amd_iommu=on iommu=pt to GRUB_CMDLINE_LINUX_DEFAULT. Run update-grub and reboot. The iommu=pt option improves performance for passthrough workloads.

Proxmox GRUB IOMMU configuration intel_iommu amd_iommu
Enable IOMMU in GRUB

Step 2: Verify IOMMU Groups

After reboot, confirm IOMMU is active and identify your GPU PCI address: dmesg | grep -e DMAR -e IOMMU and find /sys/kernel/iommu_groups/ -type l | sort. The GPU (and ideally its audio function at 03:00.1) should be alone in its group. If grouped with unrelated devices, try a different PCIe slot or motherboard with ACS support.

Verify IOMMU groups lspci GPU Proxmox passthrough
Verify IOMMU groups

Step 3: Bind GPU to vfio-pci

Blacklist the host driver (nouveau, nvidia, amdgpu for the passthrough card). Add VFIO IDs to /etc/modprobe.d/vfio.conf using lspci -nn vendor:device IDs. Run update-initramfs -u and reboot. Confirm lspci -k -s 03:00.0 shows vfio-pci in use.

Bind NVIDIA GPU to vfio-pci driver Proxmox passthrough
VFIO driver binding

Step 4: Create PCI Device Mapping (Cluster-Wide)

Datacenter → Permissions → Resource Mappings → PCI Device → Add. Map the GPU by PCI address (e.g. 0000:03:00.0) with ID gpu-rtx. Mappings make the device selectable in the VM hardware UI and enforce consistent naming across nodes.

Proxmox PCI device mapping GPU passthrough datacenter
PCI device mapping

Step 5: Configure the VM — OVMF, Q35, hostpci

Create VM with OVMF (UEFI) BIOS and q35 machine type. Add PCI Device → select mapped GPU. Enable PCIe, set ROM-Bar off if boot hangs (common NVIDIA fix), enable Primary GPU for Windows display. CPU type host improves performance. Disable guest CPU flags that conflict with migration if this VM is stationary.

Proxmox VM hardware hostpci GPU passthrough settings
VM hardware PCI settings

Step 6: Install Guest Drivers (Windows / Linux)

Windows: Install VirtIO drivers ISO first (network/disk), then NVIDIA/AMD driver from vendor site. If Device Manager shows Code 43, add args: -cpu host,hv_vendor_id=proxmox or hide KVM hypervisor flag per Proxmox wiki.
Linux: Install nvidia-driver or use distro ROCm stack for AMD. Blacklist nouveau in guest if needed.

Proxmox Windows GPU VM summary hostpci NVIDIA driver installed
Guest GPU driver install

Step 7: Validate and Monitor

Windows: Device Manager → Display adapters shows GPU without warning icon; run GPU-Z or nvidia-smi in Linux guest. On host, confirm GPU does not revert to nouveau after updates — pin Proxmox kernel or re-run initramfs if needed. Snapshot the working VM before driver upgrades.

Validate GPU passthrough working Proxmox VM running status
Validate passthrough success

Complete config snippet

# /etc/default/grub (Intel example)
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

# /etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:2484,10de:228b
blacklist nouveau
blacklist nvidia

# VM config (qm set)
qm set 105 --bios ovmf --machine q35 --cpu host
qm set 105 --hostpci0 0000:03:00.0,pcie=1,rombar=0,x-vga=1

# Windows Code 43 workaround (if needed)
qm set 105 --args "-cpu host,hv_vendor_id=proxmox"

Troubleshooting

Symptom Fix
Black screen at VM boot rombar=0, ensure OVMF, try SeaBIOS for legacy GPUs
Code 43 (NVIDIA Windows) hv_vendor_id workaround, hide KVM features
GPU still used by host driver Verify vfio-pci binding, update-initramfs, blacklist
IOMMU group not isolated Different slot, ACS-capable board, or wiki ACS override
Host loses console Use IPMI or separate management GPU — never pass only iGPU without headless plan

Related tutorials

Image credits: All illustrations use original Proxmox VE branded artwork created
for Gnome IT Solutions — not copied from vendor marketing assets or third-party screenshots.
Tutorial text © Gnome IT Solutions.

Image credits: Screenshots are from the official
Proxmox VE documentation
(Proxmox GmbH), used under open documentation terms for educational purposes.
Tutorial text and layout © Gnome IT Solutions.