Proxmox GPU passthrough sounds like magic. Take a physical graphics card, hand it directly to a virtual machine, and the VM runs with near-native performance: gaming VMs that feel real, Plex transcoding at hardware speed, AI workloads on consumer GPUs without dual-boot. The marketing version is clean.
The operational reality is the most hardware-dependent feature in the entire Proxmox stack. IOMMU groups that share a GPU with an unrelated PCIe device. Vendor reset bugs that brick the card until host reboot. NVIDIA Code 43 from older drivers. BIOS settings that don’t exist on the consumer board you bought. AMD Granite Ridge iGPUs that hang at “Loading Initial ramdisk.” Single-GPU systems where giving away the card means losing console access too.
This is a decision guide. It will not walk through the GUI clicks to enable passthrough. Proxmox documentation and dedicated tutorials handle that well. It covers the operational reality: when GPU passthrough earns its complexity budget, when the hardware lottery isn’t on your side, and which failure modes consistently appear in forum reports through 2026.
/dev/dri is usually the lower-friction choice that provides the same hardware media engine for supported Linux workloads, without VFIO complexity.
Best for most homelabs: Only attempt GPU passthrough if you have a dedicated secondary GPU for the host (or onboard graphics that work), modern hardware with verified IOMMU isolation, and tolerance for hardware-specific debugging.
GPU passthrough is worth it when:
- Plex/Jellyfin hardware transcoding at a scale where the workload genuinely needs exclusive GPU access, not just hardware acceleration – codec, resolution, bit depth, and how many concurrent streams your specific GPU’s media engine handles all factor in more than a fixed stream count
- AI/ML model training or inference on a dedicated GPU
- Gaming VM with a discrete GPU separate from the host’s display
- CAD workstation virtualization on Quadro/Radeon Pro hardware
Should you attempt Proxmox GPU passthrough? Decision matrix
| Scenario | Attempt passthrough? | Better alternative |
|---|---|---|
| Single-GPU homelab (no host backup video) | No | Use the GPU on the host, share via VirGL or LXC |
| Single-NIC mini PC with iGPU only | Risky | Pass through iGPU; keep SSH-only host management |
| Mini PC with iGPU + discrete GPU via OcuLink | Yes | Cleanest mini PC passthrough pattern |
| Tower with 2 GPUs (primary + passthrough) | Yes | Standard homelab pattern |
| Plex/Jellyfin transcoding only | Usually no | LXC with /dev/dri device passthrough is simpler |
| Multiple VMs sharing one GPU | No (use mediated) | NVIDIA vGPU on professional cards; not for consumer GPUs |
| AMD GPU on Granite Ridge or older Vega | Caution | Reset bug; budget setup time for workarounds |
| NVIDIA consumer 30/40-series to Windows VM | Yes | Modern drivers removed the old virtualization-detection block; a remaining Code 43 is a generic device-failure diagnosis |
| NVIDIA RTX 5090 / Blackwell consumer | Verify current reports first | Some Blackwell configurations have reported reset/initialization issues; confirm against your exact model, driver, and kernel before buying for this purpose |
| HA cluster member with GPU-bound VM | Usually no | Mediated devices (vGPU) are the exception, not the rule |
This is the fast-scan version of the rest of this article. The reasoning behind each row follows below.
- GPU passthrough requires CPU + motherboard IOMMU support (Intel VT-d or AMD-Vi) and clean IOMMU group isolation, which is motherboard-and-firmware-specific and needs verifying per board, not assumed from CPU family
- The target GPU must be available to VFIO when the VM starts; early binding at boot is common, but per-device driver override or controlled dynamic unbinding can also work depending on host design
- Some AMD GPU and iGPU models still show unreliable reset behavior in 2026 – check the exact PCI ID, supported reset methods, kernel, and
vendor-resetcompatibility rather than trusting a generation-wide claim - The old NVIDIA virtualization-detection Code 43 is largely obsolete on modern drivers; a current Code 43 is a generic device-failure status needing normal diagnosis. Some recent Blackwell consumer GPU configurations have separately reported reset/initialization issues in community reports – verify your exact model, driver, and kernel rather than assuming a whole generation is affected
- Single-GPU passthrough means giving up the host’s only display output; plan SSH or IPMI access first
- Full GPU passthrough prevents ordinary live migration; HA restart may still be possible on another node with an equivalent mapped device, while mediated devices (NVIDIA vGPU) use a separate migration model supported by Proxmox VE 8.4+
- For Plex/Jellyfin transcoding alone, LXC with
/dev/driis simpler than full VFIO and provides the same hardware media engine for supported Linux workloads
What Proxmox GPU passthrough actually does (and doesn’t)
Proxmox GPU passthrough uses VFIO (Virtual Function I/O) to detach a physical PCIe device from the host kernel and bind it to a special driver that hands control to a virtual machine. The VM sees the GPU as if it were installed in a bare-metal system. There’s no emulation layer, no driver translation, no software bottleneck.
Three layers must align for it to work:
- Hardware layer: CPU with Intel VT-d or AMD-Vi support, motherboard with IOMMU enabled in BIOS, GPU in its own IOMMU group (or grouped only with its own audio function and bridges)
- Kernel layer: IOMMU enabled at boot, VFIO modules loaded, and the target GPU driven by
vfio-pciinstead of the host driver – via blacklisting, early binding by PCI ID, or per-device driver override, whichever fits the host without disabling drivers other devices still need - VM layer: a compatible machine type and firmware – commonly
q35with OVMF for modern GPUs, though not universal – plus a correcthostpciconfiguration in/etc/pve/qemu-server/<VMID>.conf
The official Proxmox VE documentation on PCI(e) passthrough is the authoritative reference for the mechanics.
What Proxmox GPU passthrough does not do:
- It does not share a GPU across multiple VMs. PCIe passthrough is exclusive. One GPU, one VM at a time. Sharing requires mediated device support (NVIDIA vGPU on professional cards), which is a different operational model covered briefly below.
- It does not work with Hyper-V or VMware Workstation on the same host. Once VFIO claims the GPU, it’s gone from the host’s perspective until reboot or explicit unbind.
- It does not support live migration of a running VM with the device attached. A VM using full passthrough cannot be live-migrated while the device is assigned. A restart on a different node with an equivalent cluster-mapped device may be possible, but it’s a cold restart onto matching hardware, not transparent failover, and it must be tested. Mediated devices are the narrow exception for actual live migration (see below).
- It does not eliminate the need for guest drivers. The VM still needs the correct NVIDIA/AMD/Intel drivers installed inside the guest OS, just like a bare-metal install would.
The mental model worth keeping: Proxmox GPU passthrough is hardware reassignment, not hardware sharing. Whatever VM owns the GPU owns it exclusively until released.
vendor-reset.
The complexity budget of Proxmox GPU passthrough
Of all the features in Proxmox, GPU passthrough has the largest hidden complexity budget – Proxmox GPU passthrough setup costs vary wildly. Ongoing costs include:
- Hardware-specific debugging. Generic guides only get you so far. Specific GPU model, motherboard firmware, and CPU generation combinations have unique quirks documented across forum threads.
- BIOS firmware fragility. A motherboard firmware update can change IOMMU group layouts. Forum reports describe working passthrough setups breaking after routine BIOS updates.
- Kernel update fragility. Major kernel updates occasionally change VFIO behavior. The vendor-reset module needs DKMS to rebuild against new kernels; if it fails silently, the AMD reset bug returns without warning.
- Reset state management. Some AMD GPU and iGPU models have incomplete or unreliable reset behavior depending on the exact PCI ID, VBIOS, motherboard, kernel, and guest driver, and can’t be cleanly released back to the host after VM shutdown. The workarounds (vendor-reset module, hookscripts that rebind drivers) themselves become moving parts in the system.
- No GUI console after passthrough is validated. The physical GPU’s framebuffer is not automatically shown through the Proxmox web interface’s NoVNC or SPICE console. Keep an emulated display attached during setup, or use guest remote desktop, until the passed-through GPU is confirmed working – don’t set
vga: noneuntil then. Once validated, you need a real monitor connected to the GPU, or remote desktop into the guest, for ongoing display access.
This is the complexity budget framing applied to GPU passthrough: every benefit comes with ongoing operational cost. Where HA’s complexity is networking-driven and benefits from careful network design, passthrough’s complexity is hardware-driven, and hardware doesn’t get patched the way software does.
The honest question to ask before attempting passthrough: is the workload genuinely incapable of running on shared host resources, or am I attempting passthrough because it’s a homelab challenge?
Complexity scale by scenario
Complexity budget is a concept; the table below is a more honest measure than specific time estimates, which vary too much by hardware, experience, and how many BIOS surprises show up along the way to be useful as fixed numbers.
| Scenario | Complexity |
|---|---|
Intel QuickSync in LXC container with /dev/dri | Low – host-driver device access, no IOMMU/VFIO configuration |
| Clean dual-GPU passthrough on supported hardware | Medium – straightforward once IOMMU isolation is confirmed clean |
| AMD reset bug workaround setup (vendor-reset, hookscripts) | High – out-of-tree module, DKMS, ongoing kernel-update risk |
| Single-GPU gaming passthrough (host driver unbind/rebind cycles) | Very high – ongoing maintenance, not a one-time setup |
| Mediated devices (NVIDIA vGPU on professional cards) | Very high – licensing process on top of the technical setup |
These assume the operator has Linux administration experience and reads through Proxmox documentation properly. Time spent debugging hardware-specific quirks (motherboard BIOS oddities, IOMMU group exceptions) isn’t captured by any fixed estimate; it can multiply the effort significantly and is exactly the part generic guides tend to skip.
The pattern worth noticing: the cheapest path operationally (LXC /dev/dri) is also the lowest-complexity path. The most ambitious path (single-GPU gaming) never really completes as a “setup” – it becomes ongoing maintenance.
Proxmox GPU passthrough vs LXC /dev/dri
For many homelab workloads marketed as “GPU passthrough scenarios,” full VFIO passthrough is operational overkill. For supported Linux media workloads, an LXC container with /dev/dri device passthrough can provide the same hardware media engine without assigning the entire PCI device to one VM – though it doesn’t offer parity for CUDA, DirectX, professional GPU features, or every vendor API, which is where full passthrough still earns its place.
The comparison that matters:
| Aspect | Full VFIO passthrough | LXC with /dev/dri |
|---|---|---|
| Setup complexity | High (IOMMU, VFIO, blacklists, kernel params) | Low (add device line to container config) |
| GPU exclusivity | One VM, exclusive | Shared across host and multiple containers |
| Reset bug exposure | High (AMD, recent Blackwell) | Much lower – the host driver retains control, though firmware and driver failures can still occur |
| Console access trade-off | Lose host display | Host keeps display |
| Guest OS flexibility | Any (Linux, Windows, BSD) | Linux only (Plex, Jellyfin, Frigate in containers) |
| HA compatibility | Prevents live migration; cluster-mapped restart may work if configured | Simpler to migrate, but still needs matching GPU hardware, drivers, and device permissions on the destination node |
| Hardware acceleration use cases | Gaming, AI/ML, CAD, exclusive workloads | Transcoding, AI inference, video pipelines |
| Setup time | Hours to weeks | Minutes |
The decision rule of thumb: if your workload doesn’t need the entire GPU to itself, doesn’t need a Windows guest, and doesn’t need DirectX-class API access, LXC /dev/dri is almost always the better path. Worth noting: container device access is simpler than VFIO and shares the host driver, but it is not automatically portable either – migrating or restarting that container elsewhere still requires compatible GPU hardware, matching drivers, and correct device permissions on the destination node. It also brings its own security considerations: privileged versus unprivileged container configuration, cgroup2 device permissions, and render/video group mappings all matter, and NVIDIA containers typically need /dev/nvidia* device nodes rather than just /dev/dri.
Typical LXC /dev/dri use cases:
- Plex Media Server transcoding (Intel QuickSync or NVIDIA NVENC)
- Jellyfin transcoding
- Frigate AI camera detection
- Local LLM inference with smaller models (when not needing dedicated VRAM)
- Hardware-accelerated video processing pipelines
When LXC is not enough:
- Gaming VMs (need Windows + DirectX + exclusive GPU)
- Heavy CUDA workloads requiring full VRAM allocation
- CAD workstations with professional graphics drivers
- Anti-cheat-protected games detecting container environments
- Workloads needing PCIe-level GPU features (specific NVIDIA enterprise features)
For most homelab Plex/Jellyfin setups, the LXC route saves days of configuration and eliminates entire categories of failure. Operators who default to full VFIO passthrough for transcoding workloads often discover after weeks of debugging that LXC would have worked the first time.
IOMMU groups: the hardware lottery
IOMMU (Input-Output Memory Management Unit) is the hardware feature that isolates PCIe devices from each other for memory access. It groups devices that share underlying buses, root complexes, or PCIe switches. The Proxmox VE wiki explicitly states the constraint for Proxmox GPU passthrough: a device can only be passed through if it’s in its own IOMMU group, or if all devices in the group are passed through together.
This rule of thumb needs one nuance: PCI bridges and root ports frequently show up inside a group listing, but they are not always devices you have to hand to the guest. What actually matters is isolation from unrelated endpoints that stay under host control – a bridge that only routes traffic to your GPU is a different situation from a genuinely shared endpoint like a network controller or storage device sitting in the same group. Use the Proxmox GUI’s PCI device view, or pvesh get /nodes/<NODE>/hardware/pci, alongside the raw group listing to confirm what’s actually assignable before concluding a group is unworkable.
This is where a meaningful share of Proxmox GPU passthrough attempts fail before they even start.
Why IOMMU grouping matters
Each PCIe device sits on a chain: device → bridge → root port → CPU. When ACS (Access Control Services) is supported and enabled, the IOMMU can isolate each device individually. When ACS is missing or disabled, the IOMMU treats the whole branch as one inseparable group.
Consumer motherboards frequently bundle multiple devices into one IOMMU group:
- A GPU grouped with the motherboard’s primary network controller
- A GPU grouped with the chipset’s USB hub
- Multiple PCIe slots sharing one root port and therefore one group
- A discrete GPU’s audio function grouped separately from the GPU itself
If your GPU shares a group with your network card, the GPU cannot be safely isolated from the network controller using normal passthrough rules – selective passthrough of just the GPU becomes impossible without weakening isolation (ACS override) or losing host networking entirely.
How to check IOMMU groups
The canonical command is:
find /sys/kernel/iommu_groups/ -type l | sort -V
lspci -nnCross-check assignability through Proxmox’s own view of PCI hardware, which reflects what the GUI will actually let you map to a VM:
pvesh get /nodes/<NODE>/hardware/pci --pci-class-blacklist ""This lists every device by IOMMU group. A clean passthrough candidate looks like this:
/sys/kernel/iommu_groups/14/devices/0000:01:00.0 GPU
/sys/kernel/iommu_groups/14/devices/0000:01:00.1 GPU audioGPU and audio in one group is normal and acceptable; they’re functions of the same physical card and pass through together as expected.
A blocked passthrough candidate looks like this:
/sys/kernel/iommu_groups/14/devices/0000:01:00.0 GPU
/sys/kernel/iommu_groups/14/devices/0000:01:00.1 GPU audio
/sys/kernel/iommu_groups/14/devices/0000:02:00.0 Ethernet controller
/sys/kernel/iommu_groups/14/devices/0000:03:00.0 SATA controllerIf your GPU shares an IOMMU group with non-GPU devices, you have three options, none of them good:
- Move the GPU to a different PCIe slot. Sometimes a different physical slot lands in a different group. Hit or miss.
- Check for a BIOS update. Some vendors fix IOMMU grouping in firmware updates.
- Use the ACS override patch. ACS override is an isolation workaround, not a hardware fix. It changes how the kernel exposes grouping and can let devices sharing an upstream path be assigned separately, without actually restoring the original DMA isolation guarantee. It should not be used where guests are untrusted, where device compromise carries real consequences, or on a host running other important workloads. Prefer a different slot, a firmware update, a different motherboard, or a dedicated host for the passthrough VM instead of normalizing ACS override as a routine homelab option.
IOMMU grouping is a per-board question, not a CPU-brand question
Community threads sometimes claim entire CPU families “just work” for IOMMU isolation while others “just don’t.” Treat that framing with suspicion. IOMMU group layout depends on the exact motherboard, chipset, firmware revision, and PCIe topology – not on whether the CPU says AMD or Intel on the box. Two boards using the same CPU family can produce completely different group layouts because of how the vendor wired root ports and bridges.
Do not select hardware based on CPU family alone. Search for reports on the exact board revision and model – not just the CPU – and verify the actual IOMMU groups yourself once the hardware is in hand, ideally before the return window closes. If you’re shopping for a mini PC for Proxmox, treat IOMMU group layout as a hardware purchase criterion, not a software configuration problem, and re-verify after any firmware update since a routine BIOS update has been known to change group layout on the same board.
- Console, IPMI, or physical recovery access available
- Active bootloader identified (plain GRUB vs
proxmox-boot-tool) - Current kernel command line saved
- Known-good previous kernel retained and bootable
- IOMMU groups captured for the current state
- Exact GPU and all companion BDFs recorded (graphics, audio, USB functions)
- Host services using the target GPU identified and stopped or reassigned
- VM and host configuration backups created
- Only one change planned per reboot
- Rollback method documented before blacklisting or unbinding any driver
Hardware and BIOS prerequisites
Before touching Proxmox configuration, verify the hardware foundation a Proxmox GPU passthrough setup actually needs:
CPU and chipset
- Intel: CPU with VT-d support – check the exact CPU and motherboard documentation rather than assuming by generation. Enable VT-d (sometimes called “Intel Virtualization for Directed I/O”) in BIOS.
- AMD: CPU with AMD-Vi – again, verify against the exact model and board rather than assuming every chip in a product line supports it. Enable IOMMU in BIOS (sometimes auto-enabled, sometimes hidden under “Advanced” or “NB Configuration”).
IOMMU support depends on the CPU, the chipset, the motherboard firmware, and which platform features the vendor has enabled or disabled – not on family name alone. Confirm it in the running kernel with the commands below rather than trusting a spec sheet.
Required versus optional settings
Not every setting commonly listed in passthrough guides is actually a hard requirement. Treat this table as the real checklist and be skeptical of guides that present all of it as mandatory:
| Setting | Status | When it matters |
|---|---|---|
| VT-d / AMD-Vi / IOMMU | Required | Enables DMA remapping – passthrough does not function without it |
| Interrupt remapping | Normally required | Needed for safe interrupt isolation; some hardware allows an unsafe override instead |
| Above 4G Decoding | Often required for large-BAR GPUs | Depends on firmware and GPU BAR size |
| Resizable BAR | Optional, guest/workload dependent | Not a universal passthrough requirement – test both states |
| SR-IOV | Not required for ordinary full passthrough | Only relevant for SR-IOV-capable devices and workflows |
| Secure Boot disabled | Not universally required | Matters mainly for unsigned DKMS modules like vendor-reset |
| CSM disabled / UEFI-only | Commonly recommended | Simplifies OVMF and GOP behavior on modern boards |
| OVMF (UEFI) firmware on the VM | Recommended for many modern GPUs | Not universal – some GPU ROMs still need SeaBIOS |
q35 machine type | Common PCIe-oriented choice | Not a strict requirement for every guest |
Change one setting at a time when troubleshooting. A stack of simultaneous BIOS and VM changes makes it impossible to tell which change actually mattered.
Verify IOMMU is actually active
After BIOS configuration and Proxmox boot, check kernel messages:
dmesg | grep -e DMAR -e IOMMU -e AMD-ViIntel should show DMAR: IOMMU enabled. AMD should show AMD-Vi: Supported feature. No output means IOMMU is not active. Return to BIOS, do not proceed.
Also verify interrupt remapping:
dmesg | grep -i 'interrupt remapping'Should show DMAR-IR: Enabled IRQ remapping (Intel) or AMD-Vi: Interrupt remapping enabled (AMD). Without interrupt remapping, passthrough fails with “Operation not permitted” or “Interrupt Remapping hardware not found.” Hardware without interrupt remapping can be forced with allow_unsafe_interrupts=1, but this is a security compromise documented as such by Proxmox.
Identify your bootloader before changing kernel parameters
Proxmox installations may boot via plain GRUB, GRUB managed through proxmox-boot-tool, or an older systemd-boot-managed layout, depending on installation history and firmware mode – see the Proxmox host bootloader documentation for the full detection logic. Editing the wrong file does nothing – or worse, gets silently overwritten on the next kernel update. Confirm which one you have before touching anything:
proxmox-boot-tool status
cat /proc/cmdline
findmnt /boot/efiPlain GRUB systems commonly use /etc/default/grub followed by update-grub. Systems managed with proxmox-boot-tool commonly use /etc/kernel/cmdline followed by proxmox-boot-tool refresh. Never edit both blindly on the assumption that one of them must be right – confirm first, edit the one that’s actually active, and save a copy of the current state before changing anything:
cp -a /etc/default/grub /root/grub.before-vfio 2>/dev/null || true
cp -a /etc/kernel/cmdline /root/kernel-cmdline.before-vfio 2>/dev/null || trueDo not test new kernel parameters over a remote session without console recovery access. A bad boot parameter on the wrong file can leave a single-console host unreachable until someone reaches it physically or through IPMI.
The vendor-specific reality
NVIDIA: old Code 43 solved, new Blackwell reset bug emerged
Modern NVIDIA consumer drivers removed the old intentional virtualization-detection block that drove most of the historical Code 43 workarounds. Guides showing hypervisor-hiding tricks (kvm=off, hv_vendor_id=proxmox) are largely leftover from 2020-2022 era documentation. That said, Code 43 itself is a generic Windows device-failure status, not a single bug – a current Code 43 can still come from a driver mismatch, a failed device reset, incorrect ROM handling, a BAR/resource problem, or an unsupported device state. Diagnose it as a device-start failure first; only reach for the old hiding tricks if the generic checks come up empty.
What still matters for NVIDIA Proxmox GPU passthrough:
- Use OVMF (UEFI) firmware on the VM when possible. OVMF gives best compatibility for modern GPUs, but if your GPU ROM is not UEFI-capable, SeaBIOS may still be required.
- Prefer
q35for modern PCIe GPU configurations when compatible with the guest, but don’t treat it as mandatory – test against your specific GPU and guest OS rather than assuming it’s required. - Use PCIe mode where appropriate for the selected machine type and GPU configuration, with the audio function on a separate hostpci entry
In September 2025, Tom’s Hardware reported a reset/initialization problem affecting some NVIDIA RTX 5090 and RTX PRO 6000 configurations (Blackwell architecture) under virtualization. CloudRift, a GPU cloud provider that encountered the issue in production, issued a $1,000 public bug bounty for a fix. Multiple Proxmox forum threads from late 2025 documented a similar pattern: after a guest VM shutdown, the card enters an unresponsive state that does not respond to PCI reset, requiring a full host reboot.
A February 2026 forum thread documented a comparable issue on an RTX 5080 (Blackwell GB203) under Proxmox VE 9.1 / kernel 6.17, with QEMU exiting immediately on VM start due to “Inappropriate ioctl for device” on the PCI reset attempt. These are specific model/driver/kernel reports, not a confirmed defect across the entire Blackwell consumer line – firmware, driver, and kernel versions all move quickly enough that a report from six months ago may not describe the current state.
The practical takeaway: treat this as a current compatibility signal worth checking before buying new NVIDIA hardware specifically for passthrough, not as proof that every Blackwell card is affected. Verify the exact GPU model, VBIOS, driver version, motherboard, and PVE kernel against current forum and vendor reports before purchase – RTX 40-series has a longer track record of predictable reset behavior if you’d rather not chase current reports.
AMD: the reset bug is still a real concern – but check the exact device, not the generation
The AMD reset bug is the most-discussed problem in GPU passthrough across years of forum activity. The mechanism: some AMD GPUs require complex vendor-specific reset sequences involving firmware communication and power state transitions. Standard PCI reset methods (FLR, bus reset) can be insufficient on affected cards. When a VM shuts down or reboots, the GPU can fail to reset, leaving it in an unusable state until host reboot.
This is not a blanket “AMD generation X is affected, generation Y is fine” situation. Before assuming a fix or a failure, check the specific device:
- Does the device expose FLR (Function Level Reset)? Check
cat /sys/bus/pci/devices/0000:<BDF>/reset_method - Is a bus reset available as a fallback?
- Does it actually reset cleanly after a guest stop and a fresh start – not just once, across several cycles?
- Is the failure specific to the discrete GPU, the iGPU, a particular VBIOS, the motherboard, or the guest driver?
- Does
vendor-resetexplicitly list support for your exact PCI ID? - Is the module actually compatible with the currently running kernel?
- Is it signed, or does it need Secure Boot disabled to load at all?
The state of workarounds in 2026:
- vendor-reset kernel module (lowell80/vendor-reset, originally gnif/vendor-reset) provides vendor-specific reset capabilities for specific affected AMD GPUs listed in its device table – check that your exact card is actually on that list before assuming it applies. It’s an out-of-tree module: it needs DKMS to rebuild against kernel updates, it needs to be allowed or signed under Secure Boot, and if the DKMS build fails silently after a kernel upgrade, the reset bug can return without any obvious warning.
- Hookscripts that explicitly unbind and rebind the GPU around VM start/stop cycles. Forum threads document evolving scripts that handle edge cases (guest-initiated shutdown vs host-initiated stop) differently.
- Newer AMD generations (RX 9000 series Navi 48) appear less affected in early reports, but verify the exact card and motherboard rather than trusting a generation-wide claim – reports vary.
A September 2025 forum thread documented Granite Ridge iGPU (Ryzen 9000 series) passthrough hanging at “Loading Initial ramdisk” even with vendor-reset loaded. The operator noted: “the AMD reset bug is never fully eradicated. I still encounter a situation roughly every 3-5 VM reboots where a full host reboot is required to get the GPU to reinitialize correctly.” Treat this as one operator’s specific hardware combination, not proof the issue affects every Granite Ridge iGPU identically.
Before trusting any AMD passthrough setup, test it, don’t just boot it once: cold boot the host, start the VM, cleanly shut down the guest, start the VM again, reboot the guest, and repeat across several cycles. A setup that works on the first boot but fails on the third restart is the pattern that actually shows up in production, not the one-shot demo.
The honest assessment: AMD GPU passthrough works on many cards, but affected devices may still require a host reboot when reset recovery fails, and setup time for workarounds should be budgeted rather than assumed away. For a learning lab, acceptable. For a workload that must be always-available, the picture is more nuanced than it used to be: RTX 40-series NVIDIA cards have a longer track record of predictable reset behavior, but selected recent Blackwell configurations have current compatibility reports worth checking before you buy.
Intel and AMD iGPU passthrough: platform-specific, not automatically the easy option
iGPU passthrough gets recommended as “the simple case,” but an integrated GPU can actually be among the more platform-specific forms of passthrough. Unlike a discrete card sitting on its own PCIe lane, an iGPU can share host display initialization, system memory, firmware tables, audio functions, chipset or root-complex resources, and power-management state with the rest of the platform. Intel generations also differ: older GVT-g mediated approaches, full device passthrough, SR-IOV-capable designs on some newer chips, and configurations that simply aren’t supported all exist under the same “Intel iGPU” umbrella. Don’t generalize a working setup on one Intel generation to the next one.
The full-passthrough pattern for Plex/Jellyfin-style transcoding looks like this on platforms where it works:
- Pass through the Intel iGPU (commonly at a BDF like
0000:00:02.0, but confirm on your board) - Run the transcoding workload in a VM with QuickSync access
- Keep host management via SSH (no console display needed)
The catch that applies regardless of platform generation: if the iGPU is your only video output, you lose host console access once it’s passed through. Plan SSH or IPMI access before attempting, not after.
For Plex/Jellyfin/Frigate specifically, host or LXC /dev/dri device access (covered above) is usually the lower-risk path and doesn’t inherit any of this platform-specific fragility – it’s worth trying that route first before reaching for full VFIO passthrough of an iGPU.
What changed in Proxmox VE 8.4 and 9.x
The cluster GPU story for Proxmox GPU passthrough shifted meaningfully in 2025-2026. Proxmox VE 8.4 (released April 2025) introduced live migration support for VMs using mediated devices (NVIDIA vGPU), provided both source and destination nodes have identical hardware and driver support. A helper tool, pve-nvidia-vgpu-helper, was added to simplify NVIDIA vGPU driver setup.
What this means practically:
- Full PCIe passthrough still prevents ordinary live migration. A VM with a physical device assigned cannot be live-migrated while that device is attached – that hasn’t changed. HA restart on a different node can still be possible when the cluster has an equivalent mapped device configured there, storage and VM configuration are available on that node, the device is free, and the guest actually tolerates the hardware change – but this is a restart onto equivalent hardware, not transparent hardware portability, and it needs to be tested, not assumed.
- Mediated devices (NVIDIA vGPU) support live migration where the vendor stack supports it. With Proxmox VE 8.4+, a VM using vGPU can live-migrate between cluster nodes if the destination has the same NVIDIA GPU hardware, the same vGPU profile, and the same driver version. The Proxmox release notes state: “Currently, only NVIDIA GPUs are known to support live migration” in this context. Do not assume every professional NVIDIA card or every vGPU profile is covered – verify NVIDIA’s current support matrix, licensing terms, and driver parity for your exact hardware before designing around it.
- Cluster device mapping (added in earlier 8.x releases) provides cluster-wide resource definitions for PCI devices, simplifying the configuration of both full-passthrough and mediated devices across multiple nodes.
- Practical limitation: mediated device support requires NVIDIA professional cards (V100, A100, T4, L40, etc.) and a vGPU subscription license from NVIDIA. Consumer cards (RTX 4090, RTX 5090) do not support vGPU.
For homelab operators, this changes very little day-to-day: consumer GPU passthrough still cannot live-migrate, though a cluster-mapped restart onto equivalent hardware is worth testing if you have it. For small business deployments considering enterprise GPU virtualization, Proxmox 8.4+ has closed a real gap with VMware vSphere capabilities in the vGPU space.
When Proxmox GPU passthrough is the wrong choice
Proxmox GPU passthrough is enthusiastically over-recommended. Be honest about whether your situation fits:
- Single-GPU systems with no fallback video. Passing through your only GPU means losing host console. If anything breaks the VM, you may need to plug in a USB-to-serial adapter or use IPMI to recover. Recovery friction is real.
- Workloads that share well. Plex transcoding, Jellyfin transcoding, Frigate AI detection often run perfectly well in LXC containers with
/dev/dridevice passthrough. Full VFIO is overkill for hardware acceleration that doesn’t need exclusive GPU access. - HA cluster members (with full passthrough). GPU passthrough binds a VM to specific hardware. That VM cannot fail over to a node without identical GPU hardware in the same IOMMU layout. The exception is mediated devices (vGPU), which require professional-grade NVIDIA hardware and licensing.
- Plans to share a GPU across multiple VMs (with consumer hardware). PCIe passthrough is exclusive. Sharing requires vGPU on professional cards with subscription licensing, not a homelab afternoon project.
- Hardware without verified IOMMU isolation. Some consumer motherboards bundle the GPU with critical chipset devices in one IOMMU group. ACS override can work around it, but knowingly weakening IOMMU isolation isn’t free.
- Gaming on a host without two physical GPUs. Single-GPU passthrough for gaming (where the same card is used by host on boot, then handed to VM) is possible but requires script-driven driver unbind/rebind cycles. It works for hobbyists. It does not work for operators who want a system that “just runs.”
- Recent Blackwell consumer GPUs (RTX 5090, 5080, RTX PRO 6000). Some GPU, driver, firmware, motherboard, and kernel combinations have reported reset or initialization failures. Verify the exact model and current software stack before buying specifically for passthrough.
The honest rule of thumb: Proxmox GPU passthrough earns its complexity when the workload requires exclusive GPU access AND your hardware verifiably supports clean isolation. Most homelab GPU use cases don’t actually need passthrough; they need hardware acceleration, which often has simpler paths.
Patterns experienced operators avoid
Across years of forum threads and community discussions, certain cautions about Proxmox GPU passthrough appear repeatedly from operators who have already learned what fails in production. These are not absolute prohibitions; they are the patterns that consistently end badly enough to be worth repeating.
- Buying hardware before checking IOMMU group reports. Verifying IOMMU isolation on the exact motherboard you intend to use, ideally before purchase, prevents weeks of frustration on a card that physically can’t support Proxmox GPU passthrough cleanly.
- Building HA expectations around consumer GPUs. Consumer cards do not support live migration even with mediated devices. Any HA design that assumes “we’ll just migrate the GPU VM” on consumer hardware is built on a false premise.
- Running single-GPU gaming hosts as if they were production. The host driver unbind/rebind cycle works for hobbyists but produces edge cases that no operator wants in a production-grade setup. Console recovery scenarios surface at the worst moments.
- Mixing experimental passthrough with critical workloads on the same host. A VM that owns the GPU can crash the host through a reset bug; if that host also runs your NAS or backup target, one bad VM shutdown takes down the whole stack.
- Assuming forum success equals reproducible stability. A working configuration posted on Reddit or the Proxmox forums is a snapshot from one operator with one hardware combination on one kernel version. Reproducing it on different hardware often fails in non-obvious ways. Treat forum success as encouragement, not as proof.
- Skipping the IPMI or backup console plan. Single-GPU passthrough without alternative console access is the configuration that bites every operator at least once. Plan recovery before you need it.
The common thread: passthrough setups age poorly without explicit anticipation of failure modes. Operators who survive long-term tend to design for the bad day, not the demo.
Exact Proxmox GPU Passthrough Errors and Diagnostic Paths
These are the exact strings and symptoms operators search for once Proxmox GPU passthrough breaks. Each one maps to a specific diagnostic order rather than a single fix – don’t skip straight to the last step because a forum post said it worked for someone else’s hardware.
“IOMMU not enabled”
dmesg | grep -iE 'DMAR|IOMMU|AMD-Vi'
cat /proc/cmdline
find /sys/kernel/iommu_groups/ -type l | headWork through it in this order: confirm VT-d/AMD-Vi/IOMMU is actually enabled in firmware, confirm the currently active kernel command line includes the IOMMU parameter, confirm IOMMU groups actually exist in /sys/kernel/iommu_groups/, check whether the platform auto-enables IOMMU without needing an explicit boot parameter at all, verify the bootloader identified above was actually refreshed after your edit, and review kernel logs for firmware/DMAR errors. No grep output doesn’t always mean “just enable it in BIOS” – it can also mean the edited file was never picked up by the active bootloader.
“vfio-pci” Is Not Binding to the GPU
lspci -nnk -s <GPU-BDF>
readlink /sys/bus/pci/devices/0000:<GPU-BDF>/driver
cat /proc/cmdline
lsmod | grep -E 'vfio|nvidia|nouveau|amdgpu|radeon'
journalctl -b -k | grep -iE 'vfio|iommu|dmar|amdgpu|nouveau|nvidia'Check, in order: was the device claimed by a host driver before VFIO had a chance? Is this GPU also the host’s boot display? Do the vendor/device IDs match another GPU in the same host? Would driver_override or a Proxmox mapped-device workflow suit this host better than a global config? Was initramfs actually rebuilt after the config change? Did the bootloader load the updated command line? Are both the GPU and its audio function bound correctly? Is the host intentionally still using an iGPU or dGPU for console or another service?
Do not blacklist every NVIDIA or AMD driver on the host by default. Blacklist or early-bind only the specific device that must never be touched by the host. On a host with multiple GPUs from the same vendor, or workloads that need the vendor driver for something else, a global blacklist can disable the wrong device entirely – and break Proxmox GPU passthrough for the card you actually needed.
“BAR 3: can’t reserve”
journalctl -b -k | grep -iE 'BAR|resource|vfio|framebuffer'
lspci -vv -s <GPU-BDF>
cat /proc/iomemPossible causes: the host framebuffer or firmware is still reserving the GPU’s BAR, insufficient MMIO address space, Above 4G Decoding disabled, resizable BAR interaction, the device still owned by a host driver, conflicting ROM/PCI topology, or passthrough of the boot GPU itself. Work through it as: confirm the device isn’t the active host console where avoidable, enable Above 4G Decoding if supported, test with ReBAR both disabled and enabled rather than assuming one setting is universally correct, verify the host driver is actually detached, remove unnecessary ROM-file overrides, and only then test OVMF/q35 as a compatibility change – not a guaranteed fix. Do not reach for video=efifb:off or similar framebuffer boot options as a universal answer; these are platform-specific and can remove host console access entirely.
Proxmox GPU Passthrough Error: Device Is Already in Use
lspci -nnk -s <GPU-BDF>
fuser -v /dev/dri/* 2>/dev/null
ps aux | grep -E 'qemu|kvm'
qm list
qm config <VMID>Possible owners: another VM, a host display driver, a container or host service using /dev/dri, a mediated-device profile, a stale QEMU process left over from a previous crash, a bound audio or companion function, or a cluster device mapping already assigned elsewhere. Forcibly unbinding a host display device while it’s actually in use can freeze or crash the host’s display stack – confirm the actual owner from the list above before force-unbinding anything.
VM Starts but the GPU Shows a Black Screen
Separate these into distinct cases before troubleshooting further – they have different fixes:
- VM is running, guest reachable over network: check the guest driver is actually installed, a monitor is connected to the passed-through GPU (not the host’s port), the correct display is set as primary in the guest, GPU audio/USB companion devices are handled, UEFI GOP support, Windows hasn’t hidden an old adapter entry, and Linux Xorg/Wayland is pointed at the right device.
- VM failed to start at all: this overlaps with the broader VM won’t start diagnostic workflow – check the passthrough-specific evidence first:
qm start <VMID> journalctl -b -k | grep -iE 'vfio|BAR|reset|IOMMU' journalctl -u pvedaemon --since "10 minutes ago" - VM starts but only with the emulated display enabled: the passed GPU likely isn’t initialized as the primary display yet. Don’t set
vga: noneuntil the guest is validated through another console path first – doing that too early just trades one blank screen for a VM you can no longer reach at all.
NVIDIA Code 43 After Proxmox GPU Passthrough
Diagnose this in order rather than jumping straight to the old hypervisor-hiding tricks:
- Confirm the guest driver version actually supports this GPU and this Windows/Linux build
- Remove obsolete
kvm=offor vendor-ID hiding parameters unless specifically required for your driver version - Test without a custom ROM file
- Inspect guest Device Manager logs (Windows) or driver logs (Linux) for the actual failure reason
- Inspect host VFIO, BAR, and reset logs for the same time window
- Verify OVMF/SeaBIOS choice and machine type actually match the GPU’s ROM support
- Confirm the GPU reset correctly after the previous VM stop – a failed reset from a prior session can surface as Code 43 on the next start
Multi-function devices: check every BDF, not just .0 and .1
lspci -nn | grep -A3 -i 'VGA\|3D\|Audio'Most discrete GPUs expose at least a graphics function and an HDMI/DisplayPort audio function; some also expose a USB or USB-C controller and serial bus functions. Proxmox GPU passthrough configs that only account for the two obvious functions miss these on certain cards. Confirm exact BDFs for your specific GPU rather than assuming every card follows the same .0/.1 pattern.
AMD Reset Bug After VM Shutdown
GPU works once, then fails on the next VM restart – this is the signature symptom of the AMD reset bug. Don’t treat a single successful boot as proof the setup is stable.
cat /sys/bus/pci/devices/0000:<BDF>/reset_method 2>/dev/null
journalctl -b -k | grep -iE 'reset|vfio|FLR|amdgpu'
dkms statusAn absent reset_method file or an unsupported method is a major warning sign, though it doesn’t automatically prove the card can never be reused. Validate through a real cycle, not a single boot: cold-boot the host, start the VM, cleanly shut down the guest, start the VM again, reboot the guest, and repeat across several cycles before calling the setup stable. Check the exact vendor-reset device list against your specific PCI ID rather than assuming it’s covered. Treat a host reboot as recovery, not as a fix – if it keeps being necessary, the reset method itself isn’t working for this card. Re-test after every kernel update, since a DKMS rebuild failure can silently reintroduce the exact same symptom.
Passthrough Broke After a Proxmox or Kernel Update
uname -r
dkms status
lspci -nnk
proxmox-boot-tool kernel list
journalctl -b -k | grep -iE 'vfio|iommu|dmar|reset'Major kernel updates occasionally change VFIO behavior or IOMMU presentation, and out-of-tree DKMS modules like vendor-reset can silently fail to rebuild against a new kernel. If you haven’t settled on a safe Proxmox update routine yet, do that first – it covers pinning and rollback in more depth than the passthrough-specific version below. If Proxmox GPU passthrough was working before an update and breaks after, boot the previous known-good kernel once and compare IOMMU groups, driver binding, and DKMS build status side by side before assuming the new kernel itself is broken:
proxmox-boot-tool kernel pin <KNOWN-GOOD-KERNEL> --next-bootPreserve the logs from the failing kernel before rebooting into the older one, and only pin the previous kernel long-term once the regression is actually confirmed rather than assumed – a pinned kernel stops receiving the fixes and security updates that come with newer releases.
Coverage scope
This article reflects Proxmox VE 8.x and 9.x behavior, including Linux kernel 7.0 in Proxmox VE 9.2, and community discussions through Q2 2026. Specific operational claims (NVIDIA driver behavior, AMD reset bug status, Blackwell reset reports, IOMMU group patterns) are based on Proxmox VE official documentation and forum discussions cited above. GPU passthrough is the most hardware-specific topic in Proxmox; outcomes for your specific GPU + motherboard + kernel combination may differ from generalized patterns described here.
Detailed VFIO troubleshooting for specific GPU models, advanced hookscript engineering, and vGPU partitioning workflows are out of scope for this article.
FAQ
Do I need a dedicated GPU for the Proxmox host?
Strongly recommended, not strictly required.
For single-GPU Proxmox GPU passthrough scenarios, if you pass through your only GPU, the host has no console output. You can manage Proxmox via SSH or the web interface, but if anything breaks the VM or VFIO binding, recovery requires alternative console access (IPMI, USB-to-serial, or a temporary GPU swap). A low-end secondary GPU or working iGPU fallback usually pays for itself on the first bad recovery day.
Can I share one GPU across multiple VMs?
Not with full passthrough.
PCIe passthrough is exclusive: one GPU per VM at a time. Sharing requires mediated device support, which on NVIDIA means professional cards (V100, A100, T4, L40, etc.) plus a vGPU subscription license. As of Proxmox VE 8.4 (April 2025), mediated devices also support live migration between cluster nodes. On consumer GPUs (RTX 4090, RTX 5090), sharing is not available. The practical homelab answer: buy more GPUs, use LXC containers with /dev/dri for shared hardware acceleration, or pick workloads that don’t need exclusive GPU access.
Does GPU passthrough work with Proxmox HA?
Not in the way most homelabs imagine.
Full passthrough prevents ordinary live migration while the device is assigned – that part doesn’t change. An HA restart on another node may be possible with a correctly configured cluster resource mapping and equivalent hardware available there, but that’s a cold restart onto matching hardware, not transparent portability, and it has to be tested rather than assumed. The narrow exception for actual live migration is mediated devices: as of Proxmox VE 8.4, VMs using NVIDIA vGPU can live-migrate within a cluster when destination nodes have identical hardware and driver support. This requires professional NVIDIA cards and vGPU licensing, not a typical homelab setup, but a real option for small business deployments where this matters.
Is the AMD reset bug fixed in 2026?
Partially, but the picture is more nuanced than it used to be.
Reset behavior varies by exact GPU or iGPU model, PCI ID, VBIOS, motherboard, kernel, and guest driver – generation alone is not a reliable predictor, though some newer devices do behave better on average. Granite Ridge iGPUs (Ryzen 9000 series) and some specific cards still exhibit reset failures requiring host reboot, and the vendor-reset module only covers models explicitly listed in its device table. Community consensus: AMD GPU passthrough is workable but expect to invest setup time in workarounds and to test your exact card through repeated cycles. Some Blackwell GPU, driver, firmware, motherboard, and kernel combinations have separately reported reset or initialization problems – verify the exact configuration before purchase rather than assuming NVIDIA is categorically safer.
Is NVIDIA Code 43 still a problem?
The historical virtualization-detection version of Code 43 is largely obsolete on modern drivers. But Code 43 is a generic Windows device-failure status, not a single named bug – a current Code 43 should be diagnosed like any other device-start failure: check the guest Device Manager and driver logs, inspect host VFIO/reset logs, test without a custom ROM file, and confirm the machine/firmware configuration before reaching for the old kvm=off or vendor-ID hiding tricks from 2020-2022 era guides. Those tricks address a specific historical cause, not every Code 43.
Can I do single-GPU passthrough for gaming?
Possible, but operationally fragile.
It requires hookscripts that unbind the GPU from host drivers before VM start and rebind after VM stop. This single-GPU Proxmox GPU passthrough setup is well-documented but operationally fragile: driver state issues, console recovery scenarios, and reset bug interactions all become routine concerns. For a hobbyist setup focused on learning, fine. For a system that needs to “just work,” consider a second physical GPU or stick to LXC for workloads that fit there.
Is LXC with /dev/dri easier than full Proxmox GPU passthrough?
Yes, by a wide margin.
For Plex, Jellyfin, Frigate, and other workloads that need hardware acceleration but not exclusive GPU access, an LXC container with /dev/dri device passthrough requires no IOMMU configuration, no VFIO binding, no kernel parameters, and avoids most VFIO-specific device-reset problems because the host driver retains ownership. The container shares the host’s GPU drivers and accesses hardware acceleration through the standard /dev/dri device interface. Many homelab use cases that get marketed as “GPU passthrough scenarios” are actually better served by LXC.
What’s the minimum hardware for reliable Proxmox GPU passthrough?
Skip the fixed CPU-generation lists – IOMMU support depends on the exact CPU, chipset, motherboard firmware, and which platform features the vendor left enabled, not on family name or generation number alone. The practical baseline: verified VT-d/AMD-Vi and interrupt remapping in the running kernel (not just the spec sheet), a motherboard with confirmed clean IOMMU group separation for the specific PCIe slot you’ll use, a GPU that actually resets cleanly across repeated guest stop/start cycles, and either a secondary GPU for the host or an accepted SSH-only/IPMI management plan. Below this baseline, expect to spend more time fighting configuration than using the GPU.
Can I use Proxmox GPU passthrough for AI/ML workloads?
One of the strongest use cases.
A consumer GPU (RTX 4070/4080/4090) passed through to a Linux VM running PyTorch, TensorFlow, or local LLM inference works well and can provide near-native performance in suitable workloads – actual results still depend on CPU pinning, NUMA layout, memory configuration, and guest drivers, not the passthrough mechanism alone. Size host RAM with the GPU workload in mind too; see Proxmox RAM sizing for how much headroom a dedicated AI VM actually needs beyond the GPU itself. For AI workloads, storage choice matters too; see Proxmox Storage: ZFS, LVM, Ceph Decisions for how dataset locality affects training throughput. Recent Blackwell consumer cards have reported reset/initialization issues on some configurations – verify current reports for your exact model, driver, and kernel before buying Blackwell specifically for this. Be aware that the VM holding the GPU cannot be live-migrated under full passthrough, and Plex/transcoding workloads needing GPU access at the same time require a second card.
Final thoughts
Proxmox GPU passthrough is the most hardware-dependent feature in the entire stack. Done right, Proxmox GPU passthrough transforms a homelab into a flexible compute platform: gaming, AI workloads, professional graphics, and dense Plex transcoding all running on one box. Done wrong, it consumes weekends in debugging IOMMU groups, fighting reset bugs, and recovering from console-loss scenarios.
For the operator deciding whether to attempt passthrough, the questions worth answering honestly:
- Does this workload genuinely need exclusive GPU access, or does it just need hardware acceleration LXC can deliver?
- Do I have verified IOMMU group isolation for the GPU on my specific motherboard?
- Do I have a host video fallback (secondary GPU, onboard graphics, IPMI) in case the passthrough breaks?
- Are there current reset, initialization, or driver reports for my exact GPU, firmware, motherboard, and kernel combination?
- Am I willing to invest setup time in vendor-specific workarounds (vendor-reset for AMD, OVMF tuning for NVIDIA)?
If those answers align favorably, GPU passthrough is one of the most rewarding capabilities Proxmox offers. If they don’t, simpler patterns (LXC with /dev/dri, dedicated workload boxes, or workloads that don’t need GPU acceleration) produce better real-world reliability than partial passthrough implementations.
The reliable Proxmox setups are the ones where operators chose features that matched their hardware. Proxmox GPU passthrough rewards homework done before the hardware was purchased.
Proxmox VE Series
27 articles – Installation · Storage · Networking · HA · Recovery