Managing GPU passthrough for virtual machines

Managing GPU passthrough for virtual machines with Proxmox VE GPU Passthrough

I set up multi-user GPU passthrough on a single Proxmox VE server so several people could run full GPU workloads at once. This is the setup I used: the checks, the config edits, and the bits that mattered when it was time to make it work.

Preparation for GPU Passthrough

Hardware requirements

  • CPU with IOMMU support: Intel VT-d or AMD-Vi. Check the CPU spec and motherboard manual.
  • Enough PCIe lanes for the number of GPUs you want to pass through. Consumer motherboards can be tight on lanes.
  • At least one discrete GPU per person if you want true passthrough. Shared vGPU tech exists, but it depends on the hardware and drivers.
  • 32 GB RAM or more for multiple virtual machines running games or heavy apps.
  • A PSU with headroom for the GPUs and the CPU.

Proxmox VE installation

  • Install the latest stable Proxmox VE. I use the official ISO on a USB stick.
  • Use ZFS or ext4 for storage depending on backup and snapshot needs. ZFS gives more resilience, but it eats RAM.
  • Keep Proxmox updated with apt update; run apt dist-upgrade after snapshots.

BIOS configuration

  • Enable VT-d for Intel or SVM/IOMMU for AMD.
  • Disable CSM/Legacy boot if the GPU drivers prefer UEFI.
  • Turn off the onboard GPU if you only want discrete cards for host and guests.
  • If the motherboard has ACS override options, leave them alone unless you understand what they do to IOMMU groups.

GPU compatibility

  • Consumer Nvidia drivers block passthrough in some driver versions, so expect driver fiddling.
  • AMD GPUs are often easier for Linux passthrough and do not have the same Nvidia consumer restrictions.
  • Check the IOMMU groupings on the machine: run lspci -nnk and inspect the groups with a script or from /sys/kernel/iommu_groups.
  • If a GPU shares an IOMMU group with other essential devices, passthrough can be unsafe or impossible without ACS patching.

Network configuration

  • Give the Proxmox host a static IP on the LAN.
  • If guests will be used for gaming, keep them on the same network segment as the clients to keep latency low.
  • Use a managed switch if heavy traffic is expected between guests and local clients. Leave MTU at the standard size unless you know the network implications.

Configuring GPU Passthrough

VM creation in Proxmox

  • Create a VM with the OS you want for the guest. For gaming, I use Windows 10/11 images.
  • Allocate CPUs, RAM and disk. I start with 4 vCPU and 16 GB for a gaming VM, then increase it if needed.
  • Do not add a display device yet. Passthrough will handle direct hardware access.

Editing configuration files

  • Enable IOMMU in GRUB. Edit /etc/default/grub and add this to GRUB_CMDLINE_LINUX_DEFAULT:
Intel: intel_iommu=on iommu=pt
AMD: amd_iommu=on iommu=pt
  • Update GRUB with update-grub and reboot.
  • Install vfio modules: create /etc/modprobe.d/vfio.conf with vfio, vfio_iommu_type1, vfio_pci and vfio_virqfd.
  • Blacklist host drivers for the GPU, for example nouveau or nvidia, by adding them to /etc/modprobe.d/blacklist.conf.
  • Find the GPU PCI IDs with lspci -nn. Example: 0000:01:00.0 and 0000:01:00.1 for audio.
  • Bind the GPU to vfio-pci by adding the IDs to /etc/modprobe.d/vfio-pci.conf or use driver_override on the host.
  • For a VM, edit /etc/pve/qemu-server/<vmid>.conf and add:
hostpci0: 01:00.0,pcie=1,x-vga=1
hostpci1: 01:00.1
  • If you want USB passthrough for keyboard and mouse, use hostusb or pass through a dedicated USB controller.

Testing GPU functionality

  • Start the VM and install the guest OS drivers.
  • For Windows, install the right GPU driver from the vendor site. If the VM blue-screens, check the host driver blacklists and vfio binding.
  • Run a GPU benchmark or game to confirm full acceleration. Check Device Manager for the GPU and look for yellow warnings.
  • From the host, confirm the GPU is bound to vfio-pci with lspci -k.

Troubleshooting common issues

  • VM boots but the GPU driver in the guest shows error 43 on Nvidia. Try vendor documentation for consumer GPU passthrough workarounds or use an OEM driver. Some Nvidia consumer cards block passthrough at driver level, so a hardware change may be the only fix.
  • IOMMU groups too large: move GPUs to a different slot, try a different motherboard, or accept limited passthrough.
  • GPU audio device shows but no sound: pass both the audio and display functions of the GPU.
  • If one GPU still needs to stay with the host console, assign a different GPU to the host or use a cheap card for the host and keep the discrete cards for guests.

Scaling for multiple users

  • I set up one test VM, validate passthrough, then clone the process for each extra card and VM.
  • Track PCIe lanes and power. A single CPU with limited lanes will throttle performance once multiple GPUs are fitted.
  • Use identical GPU models where possible to keep driver handling simpler.
  • Assign GPUs to separate PCIe root ports where possible so the IOMMU groups stay clean.
  • If hardware or licence limits make full passthrough impossible, use a mixed approach: one or two full-passthrough VMs and several lighter VMs with GPU-accelerated encoding or CPU-only profiles.
  • For thin-client access in a homelab gaming setup, give each guest a static IP, RDP or Parsec sessions, and match input latency to the thin client hardware.

Final practical notes

  • Start small: one GPU and one VM. Check the Proxmox config, GRUB options and vfio binding before adding more cards.
  • Keep a recovery plan handy: store a backup of the host config and a Proxmox snapshot of any VM before major changes.
  • Measure real-world load: check CPU, PCIe lane use and temperatures once multiple guests run at the same time.

I documented a simple multi-GPU, multi-user layout in a home project called ProxBi. It started with the same idea: multiple GPUs, multiple VMs, thin clients for access. Use that pattern to plan cabling, cooling and power before buying parts.

Related posts

Weekly Tech Digest | 06 Jul 2026

Stay updated with the latest in tech! This digest covers AI ethics, auto industry shifts, and the impact of politics on technology, exploring today's pressing issues.

wolfCOSE zero-allocation parsing in embedded C

wolfCOSE looks sensible only if you care about what your firmware actually has to carry. I like that, because on small targets the wrong crypto feature can cost more than the message itself, and there...

restic | v0.19.1

restic v0 19 1: safer FUSE mounts and mountpoint checks, robust backup source and exclude handling, clearer CLI JSON output, Windows SFTP deletion fixes