Configure NVIDIA GPU Passthrough on Proxmox VE 9.2 with Kernel 7.0

Updated on Sep 21, 2026
Mila H
8 MINS READ
Table of Contents
NVIDIA GPU Passthrough on Proxmox 9.2

GPU passthrough lets a virtual machine control a real GPU directly, almost like bare metal. This guide covers Proxmox 9.2 NVIDIA GPU passthrough on Proxmox VE 9.2 with kernel 7.0 and checks the setup with a real CUDA test.

If you need a general libvirt/KVM walkthrough instead, check the GPU Passthrough KVM Setup guide.

What You Need Before You Start

Setting up Proxmox 9.2 NVIDIA GPU passthrough correctly depends on a short list of hardware and software checks. Confirm these first:

  • A CPU and motherboard that support IOMMU, such as Intel VT-d or AMD-Vi.
  • A dedicated NVIDIA GPU. If it's your only GPU, plan to manage the host over SSH instead of a monitor.
  • Full root access to a Proxmox VE 9.2 host with kernel 7.0 installed.
  • BIOS/UEFI options enabled: VT-d or AMD-Vi, and above 4G Decoding.
  • A Linux guest ISO, such as Ubuntu 24.04 LTS or 26.04 LTS, for testing CUDA.

Check your current kernel and Proxmox version with:

Bash
pveversionuname -r

If you are still on an older 6.x kernel, install kernel 7.0 with:

Bash
apt updateapt install proxmox-kernel-7.0reboot

If you want to skip all this setup, PerLod's high-performance GPU hosting comes with GPU passthrough already done for you.

Step 1: Confirm the GPU and IOMMU Support

Before touching any configuration file, confirm the host actually sees the GPU and that IOMMU can be enabled. List your GPU and its audio function with:

Bash
lspci -nn | grep -i nvidia

You should see the VGA controller and its HDMI audio device, each with a vendor:device ID pair like 10de:2684. Write both down; you will need them later.

Step 2: Enable IOMMU for Kernel 7.0

From kernel 6.8, Intel IOMMU turns on by default, and AMD-Vi has always been on by default too. Kernel 7.0 also keeps this. So you don't need to add intel_iommu=on manually anymore, but it's good to set it along with iommu=pt for better performance.

Open the GRUB configuration file with your desired text editor:

Bash
nano /etc/default/grub

Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and edit it:

Bash
#For Intel CPUs:GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" #For AMD CPUs:GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

Note: If your Proxmox host boots with UEFI and systemd-boot instead of GRUB, edit this file instead:

Bash
nano /etc/kernel/cmdline

Add the same parameters on one line, then apply them:

Bash
proxmox-boot-tool refresh

Save the file, then update GRUB and reboot:

Bash
update-grubreboot

After the reboot, confirm IOMMU is active:

Bash
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi

You should see lines confirming IOMMU or Directed I/O is enabled. If nothing appears, double-check the BIOS setting and the kernel command-line file you edited.

Step 3: Load the VFIO Kernel Modules

VFIO safely gives a PCI device to a VM. You must add the required modules so they load at every boot. Edit the file and add:

Bash
nano /etc/modules
Bash
vfiovfio_iommu_type1vfio_pcivfio_virqfd

Save the file, then rebuild the initramfs and reboot:

Bash
update-initramfs -u -k allreboot

Confirm the modules loaded with the command below:

Bash
lsmod | grep vfio

Step 4: Check IOMMU Groups

Every PCI device belongs to an IOMMU group, and the whole group passes through together. For a clean Proxmox 9.2 NVIDIA GPU passthrough setup, your GPU and its audio should ideally be in their own group, or share it only via a PCIe bridge. Check with:

Bash
pvesh get /nodes/$(hostname)/hardware/pci --pci-class-blacklist ""

Or use the manual loop with:

Bash
for g in /sys/kernel/iommu_groups/*; do  echo "Group ${g##*/}:"  for d in $g/devices/*; do    echo -n "  "; lspci -nns "${d##*/}"  donedone

If the GPU shares a group with unrelated devices, like a USB controller or a NIC, try a different PCIe slot first. Use the ACS override patch only as a last resort; it weakens device isolation.

Step 5: Free the GPU From the Host

The Proxmox host must not load its own NVIDIA driver on the card you want to pass through, or VFIO will not be able to claim it. Find the current driver with:

Bash
lspci -nnk | grep -A 3 -i nvidia

Blacklist the host GPU drivers by creating a new file:

Bash
nano /etc/modprobe.d/blacklist-nvidia.conf

Add these to the file:

Bash
blacklist nouveaublacklist nvidiablacklist nvidiafbblacklist nvidia_drmoptions nouveau modeset=0

Next, you must bind the card to vfio-pci using the vendor:device IDs from Step 1. Create another file:

Bash
nano /etc/modprobe.d/vfio.conf

Add and replace the IDs with your own:

Bash
options vfio-pci ids=10de:2684,10de:22ba disable_vga=1

Apply the changes and verify the GPU is owned by vfio-pci:

Bash
update-initramfs -u -k allrebootlspci -nnk -s 01:00.0

The line should read Kernel driver in use: vfio-pci. If it still shows nvidia or nouveau, recheck the blacklist file and rebuild the initramfs again.

Step 6: Create the VM with the Right Machine and CPU Type

This is where a correct Proxmox 9.2 NVIDIA GPU passthrough VM is built. In the Proxmox web UI, create a new VM with these settings:

  • System: Machine type q35, required for PCIe passthrough, BIOS OVMF (UEFI), and add an EFI disk.
  • CPU: Type host so the guest sees the real CPU features.
  • Memory: Enough for your workload; AI or CUDA testing usually needs at least 8 GB.
  • Disk and network: VirtIO SCSI and VirtIO NIC for best performance.

Also, you can create the VM from the command line and adjust it later by editing its config file directly:

Bash
nano /etc/pve/qemu-server/<VMID>.conf

Make sure these lines are present:

Bash
machine: q35bios: ovmfcpu: host

Step 7: Attach the GPU as a PCI Device

In the VM's Hardware tab, click Add > PCI Device, then select your GPU from the dropdown. Enable:

  • All Functions: on
  • PCI-Express: on
  • ROM-Bar: on
  • Primary GPU: only if this VM has no other display device

Alternatively, you can do it from the shell:

Bash
qm set <VMID> -hostpci0 01:00,pcie=1,x-vga=1,rombar=1

Step 8: Install NVIDIA Drivers Inside the Linux Guest

At this point, you can boot the VM, install your Linux guest OS, then update it and install the driver:

Bash
apt update && apt upgrade -yapt install build-essential dkms -yubuntu-drivers devices

Install the driver Ubuntu recommends for your card, or a specific branch:

Bash
apt install nvidia-driver-580 -yreboot

After reboot, confirm the driver loaded inside the guest:

Bash
nvidia-smi

If this command prints your GPU name, driver version, and a temperature/utilization table, the core of your Proxmox 9.2 NVIDIA GPU passthrough setup is working.

Step 9: Install CUDA and Verify GPU Compute Access

The nvidia-smi working only proves the driver loaded, not that CUDA works. Install the CUDA toolkit inside the guest:

Bash
apt install nvidia-cuda-toolkit -ynvcc --version

Then run a real compute check instead of just a driver check. The simplest reliable test uses Python and PyTorch:

Bash
apt install python3-pip -ypip install torch --index-url https://download.pytorch.org/whl/cu121python3 - << 'PY'import torchprint("Torch version:", torch.__version__)print("CUDA available:", torch.cuda.is_available())if torch.cuda.is_available():    print("Device:", torch.cuda.get_device_name(0))    x = torch.rand(4096, 4096, device="cuda")    y = torch.matmul(x, x)    torch.cuda.synchronize()    print("Matrix multiply on GPU succeeded:", y.shape)PY

If it prints your GPU's name and finishes the matrix multiply with no errors, your Proxmox 9.2 NVIDIA GPU passthrough VM has full CUDA access, not just PCI visibility. This matters for AI training, rendering, and other real compute workloads.

For ongoing AI training or inference, PerLod's AI hosting plans are built for that kind of workload.

Common Proxmox VE 9.2 and Kernel 7.0 Passthrough Failures

These are the common failures seen on current Proxmox VE 9.2 hosts running kernel 7.0:

1. VM will not start; error mentions IOMMU or vfio: IOMMU is not active. Recheck the BIOS setting and the /etc/default/grub or /etc/kernel/cmdline entry, then re-run update-grub or proxmox-boot-tool refresh.

2. GPU still shows the nvidia or nouveau driver on the host: The blacklist file was not picked up. Confirm the file is under /etc/modprobe.d/, then rerun update-initramfs -u -k all and reboot; a small initramfs rebuild is the most common cause.

3. Second VM start after a stop hangs or shows a black screen: This is the NVIDIA consumer-GPU reset problem, not a config error. Reboot the host between tests, or use the vendor-reset module for supported cards.

4.nvidia-smi works, but CUDA programs fail or crash: The CUDA toolkit version inside the guest is newer than what the installed driver supports. Run nvidia-smi to see the driver's maximum supported CUDA runtime, then match or downgrade the toolkit.

5. IOMMU group includes unrelated devices: Move the GPU to a different physical PCIe slot on the host, since slot wiring, not the OS, decides IOMMU grouping on most consumer boards.

6. Kernel 7.0 upgrade broke a previously working passthrough VM: Rebuild the initramfs after any kernel change (update-initramfs -u -k all) and confirm the vfio modules and blacklist files still load with lsmod | grep vfio.

Conclusion

Setting up Proxmox 9.2 NVIDIA GPU passthrough is a series of simple steps. You must enable IOMMU, load VFIO, free the GPU from the host, attach it to a q35/OVMF VM with CPU type host, then install the driver and CUDA toolkit in the guest. 

We hope you enjoy this guide. For the official passthrough options and syntax, check the Proxmox VE PCI(e) Passthrough wiki.

Any NVIDIA GPU with its own IOMMU group works for Proxmox 9.2 passthrough. GeForce cards work but may have reset issues; workstation and data-center cards are more reliable.

No. Once a GPU is bound to vfio-pci and passed to a VM, the host cannot use it for its own display or compute tasks.

The steps are the same. The main difference: kernel 7.0 turns on Intel IOMMU by default, so intel_iommu=on is now optional, not required.