My Proxmox GPU Passthrough Setup

My personal notes and configuration for GPU passthrough on Proxmox VE with NVIDIA cards. Includes the exact setup I use for high-performance VMs.

Stack: Proxmox VE, NVIDIA, QEMU, VFIO
View code

My Proxmox GPU Passthrough Setup

These are my personal notes from setting up GPU passthrough on my Proxmox VE homelab. I’m sharing this configuration because it took me days to get it working properly, and these are the exact steps that worked for my hardware.

Why I Needed This

I wanted to consolidate multiple physical machines into one Proxmox server while maintaining GPU performance for:

  • Gaming Windows VM with near-native performance
  • ML/AI experimentation with CUDA acceleration
  • Video encoding projects
  • Testing GPU-accelerated applications

My Hardware Setup

  • Proxmox VE 8.1
  • Intel CPU with VT-d enabled
  • ASUS motherboard with IOMMU support
  • NVIDIA RTX 3080 for passthrough
  • Integrated graphics for Proxmox host display

My Configuration Steps

1. BIOS Settings

I enabled VT-d in my BIOS under Advanced > CPU Configuration. This is critical - without it, nothing works.

2. GRUB Configuration

This is what I added to /etc/default/grub on my system:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

Then updated GRUB:

update-grub

Note: Use amd_iommu=on if you have an AMD CPU.

3. Load VFIO Modules

Edit /etc/modules:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

4. Blacklist GPU Drivers

Create /etc/modprobe.d/blacklist.conf:

blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist nvidia_drm

5. Update initramfs

update-initramfs -u -k all

Verify IOMMU Groups

After reboot, check IOMMU groups:

#!/bin/bash
for d in /sys/kernel/iommu_groups/*/devices/*; do
    n=${d#*/iommu_groups/*}; n=${n%%/*}
    printf 'IOMMU Group %s ' "$n"
    lspci -nns "${d##*/}"
done

Your GPU should be in its own IOMMU group or with only its audio device.

VM Configuration

  1. Add PCI device in Proxmox web UI
  2. Enable “All Functions” if GPU has audio
  3. Set machine type to q35
  4. Add hostpci0 line to VM config:
hostpci0: 0000:01:00,pcie=1,x-vga=1

Common Issues

Black Screen on VM Boot

  • Try adding video=efifb:off to VM kernel parameters
  • Ensure you have a second GPU for Proxmox host

Code 43 in Windows

  • Add vendor-id to VM config: vendor-id=1234567890ab
  • Hide KVM: args: -cpu host,kvm=off

Poor Performance

  • Enable MSI interrupts
  • Use virtio drivers for storage and network
  • Pin CPU cores for better performance

My Results

After getting everything configured, I’m now running:

  • Windows 11 VM for gaming with ~95% native RTX 3080 performance
  • Ubuntu VM with CUDA for AI/ML experiments
  • Stable 4K gaming at 60+ FPS in most titles
  • Can reassign the GPU between VMs without rebooting the host

The setup has been rock-solid for several months now.

Helpful Resources

These resources helped me figure this out:


Last Updated: November 2025 My Setup: Proxmox VE 8.1 + NVIDIA RTX 3080 Status: Production-ready and stable