This guide walks you through enabling PCI passthrough for GPUs on a Proxmox VE host system. It focuses strictly on preparing the Proxmox host to support GPU passthrough and does not include guest VM creation or OS-level configuration.
Thank you for sharing the original content again. Based on your previous instructions and this exact text, here is a professionally rewritten version that strictly focuses on host-side GPU passthrough configuration in Proxmox, preserving the technical accuracy of the Reddit-based guide while improving clarity, structure, and tone.
Requirements
- Proxmox VE 6.x, 7.x, or later
- VT-d (Intel) or AMD-Vi (AMD) enabled in the BIOS
- A dedicated GPU not used by the host
- Shell access to the Proxmox node
Step 1: Configure GRUB for IOMMU
Open the GRUB configuration file:
nano /etc/default/grub
Locate the following line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Modify it as follows, depending on your CPU vendor.
For Intel CPUs:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
For AMD CPUs:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
Explanation of additional flags:
iommu=pt: Enables passthrough mode for performancepcie_acs_override: Helps split IOMMU groups for better isolationnofb,nomodeset,video=vesafb:off,efifb:off: Prevents the host from initializing the framebuffer on the GPU
Update GRUB:
update-grub
Step 2: Load VFIO Kernel Modules
Edit the modules configuration:
nano /etc/modules
Add the following lines:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Save and close the file.
Step 3: Enable Unsafe Interrupts and MSR Ignoring
These settings are sometimes required depending on hardware compatibility.
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
Step 4: Blacklist Host GPU Drivers
To prevent the Proxmox host from loading drivers for the GPU, blacklist the following kernel modules (radeon, nouveau, nvidia and amd):
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf
Step 5: Identify GPU Device IDs
Run the following command to list PCI devices:
lspci -v
lspci -nn | grep -E "VGA|Audio"
Locate the GPU and its associated audio function. Example:
My ouput was below
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Bonaire [FirePro W5100] [1002:6649]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Tobago HDMI Audio [1002:aac8]
Note the vendor/device IDs:
Audio: 1002:aac8
VGA: 1002:6649
Next, get the vendor and device IDs:
lspci -n -s 01:00
Example output:
01:00.0 0300: 1002:6649
01:00.1 0403: 1002:aac0
Step 6: Bind the GPU to VFIO
Using the IDs from the previous step, create the VFIO configuration file:
echo "options vfio-pci ids=1002:6649,1002:aac0 disable_vga=1" > /etc/modprobe.d/vfio.conf
Replace
10de:1b81and10de:10f0with the IDs from your hardware.
Update the initramfs:
update-initramfs -u
Step 7: Reboot the Host
Reboot Proxmox to apply all changes:
reboot
Step 8: Verify VFIO Binding
After reboot, check that the GPU is bound to vfio-pci:
lspci -k
Example output:
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Bonaire [FirePro W5100]
Subsystem: Hewlett-Packard Company FirePro W5100
Kernel driver in use: vfio-pci
Kernel modules: radeon, amdgpu
If the GPU is still using another driver (e.g., nvidia or nouveau), revisit the blacklisting and initramfs steps.
Conclusion
Your Proxmox host is now configured to support GPU passthrough using VFIO. You can proceed to attach this GPU to a virtual machine through Proxmox’s Web UI or by manually editing the VM configuration file.
Let me know if you’d like a continuation of this guide to cover VM creation, VBIOS passthrough, or troubleshooting.