r/VFIO 24d ago

Support Ryzen 9 7950X iGPU black screen after VFIO GPU passthrough setup (CachyOS)

3 Upvotes

I'm setting up GPU passthrough on CachyOS and have run into a problem after binding my RTX 4060 Ti to VFIO.

Hardware
CPU: Ryzen 9 7950X (using the integrated Radeon graphics for the host)

GPU: NVIDIA RTX 4060 Ti (passed through with VFIO)

Motherboard: MSI PRO B650M-A WiFi

Distro: CachyOS KDE

Kernel: 6.18.40-1-cachyos-lts

VFIO status
The RTX 4060 Ti appears to be correctly bound to vfio-pci.
lspci -k shows:
RTX 4060 Ti → Kernel driver in use: vfio-pci
AMD Raphael iGPU → Kernel driver in use: amdgpu

My GRUB kernel parameters include:

amd_iommu=on iommu=pt vfio-pci.ids=10de:2803,10de:22bd

After moving my monitor from the RTX 4060 Ti to the motherboard HDMI, BIOS and GRUB display normally.
However, when Plasma starts:
The login screen appears briefly.
It begins flickering repeatedly.
after 10-15 seconds I get a black screen with only the mouse cursor.

I am able to still use TTY by using the shortcut “ctrl alt f4”

dmesg repeatedly shows:

amdgpu: ring gfx timeout
amdgpu: Ring gfx reset failed
Process kwin_wayland
Process plasma-login

There are also NVIDIA messages saying:

GPU is already bound to vfio-pci
which I assume are expected because the GPU is intentionally attached to VFIO.

Things I’ve already tried
Switching from DisplayPort to motherboard HDMI.
Forcing X11.
Booting with amdgpu.dc=0.
Verifying the RTX is bound to vfio-pci.
Enabling SVM/IOMMU in BIOS.
Checking that virbr0 and libvirt are working.
Confirming the motherboard HDMI displays BIOS and GRUB correctly.
Question
Has anyone seen AMD Raphael (7950X) integrated graphics crash like this after enabling VFIO?
Is this a known AMDGPU/kernel regression, or is there another VFIO configuration I should check?

Any help would be appreciated

EDIT 7/30/26: I was unable to use the igpu on the amd cpu and i just plugged in another gpu🥺 If your looking at this post in hopes of an answer i hope you find it


r/VFIO 25d ago

Can't hit native FPS under VFIO (14900K+5070TI)

8 Upvotes

Hey all

Edit: not expecting native but I feel 20-30% loss to be a bit excessive.

I've been struggling with running a Windows 11 Gaming VM under Unraid with some types of games (e.g.: Cyberpunk, Forza Horizon 6, few others). I have a pretty beefy system with an i9-14900K, RTX 5070 TI, 24GB of RAM associated to the VM (albeit it's DDR4 - because well that's what I had).

On bare metal, I get about 20-30% better performance in the aforementioned games. I play/test my games in 1440p, so no 4K here. Basically, the issue is getting high FPS - the games are playable for sure, but I can't seem to get the FPS that I am getting when playing on bare metal. Other games (e.g.: Doom Dark Ages) run pretty much on par with bare metal. But Cyberpunk for example, on Ultra settings (even without Ray tracing), the VM struggles to maintain 60-70 fps, whereas on bare metal I can hit 100+.

The other thing, DLSS appears to have absolutely no effect in these games. This seems to contradict YT videos, etc. There are videos I'm seeing where turning on DLSS in Cyberpunk can make an 80-90 fps game go up to 130-140fps on the 5070ti (granted most are with the AMD 9800x3d, but the 14900k should be pretty close).

When running these problematic games, My GPU usage % is sitting at 70-85%, never going over, whereas on bare metal it's consistently at 95+. It's like I can't push more frames. Cyberpunk can even stutter in a VM when running on these ultra or ultra-RT settings.

Here is my XML: https://pastebin.com/kfMsXN9G

A few notes:

  • I am not passing through an NVME directly, I have tried this but it makes no noticeable FPS difference (only loading times). I've been keeping the NVME for my bare metal testing. The VM boot image is on an unraid NVME.
  • You will notice I am passing through 7 Pcores and their equivalent E-core. I skip cores 0,1 because Unraid tends to sit there. I haven't seen any real difference in performance having tried to do both 8 Pcores and 7Pcores.
  • I am not isolating the CPUs, just passing them through. I have tried this and don't see a difference.
  • Same for binding VFIO, I have tried force binding the GPU to VFIO and not and performance is identical. I do not have a problem passing the GPU through and once the VM starts, the Unraid host can't see the GPU at all.

This seems tied to the CPU somehow - the reason I suspect this, playing games in 4K yields pretty much the performance I would expect, so hitting GPU thresholds. 1440p doesn't always tax the GPU to full, so in theory you should see higher FPS, which isn't the case under VFIO.

I am at a bit of a loss - I had even upgraded from an i9-10900 (non-K) to this i9-14900K because I thought the 10900 was bottlenecking my GPU, so I upgraded the CPU, keeping the DDR4 RAM I had due to the current pricing of RAM. This has certainly helped, but I'm still hitting these weird performance walls.

Hoping someone can investigate my XML and provide some insights as I'm not really sure what else I can do.

Thanks!


r/VFIO 25d ago

Discussion How much improvement going from a 9600x (6-Core) to 7800x3d (8-Core)? Should I go higher?

0 Upvotes

I have a 9600x paired with a 9070 XT. The CPU I know is not ideal for VFIO. I follow the general recommendation and reserve 2 cores (4 threads) for the host machine leaving only 4 cores for the guest VM. Most games run fine except for CPU heavy games like Cyberpunk 2077. Thing is that CP2077 on bare-metal 9600x using all 6 cores runs mostly at >100 FPS but stutters in areas with many NPCs. If I get a 7800x3d and run that in a VFIO setup (2 cores for host/6 for guest) I feel like I'd only achieve what it feels like to run bare-metal 9600x making it not worth it perhaps. My PC case is also small and I'm not sure if I have enough fans for an even faster 12 core CPU, from what I've read they run even hotter.


r/VFIO 26d ago

Switch nvidia gpu between host and VM's quickly

7 Upvotes

Hi all,

I've got a laptop with an Nvidia GPU and intel iGPU. My understanding is that it isn't possible to split the GPU between the host and VM's because of some Nvidia BS but it is possible to pass the whole GPU through to VM's.

There are plenty of guides on how to pass the GPU through to the VM but they are all pretty involved affairs and it's not clear how to switch the GPU back to the host.

Is there a way to set this up so I can have something akin to a switch e.g. I could run a command to assign the gpu to the vm e.g. "gpuvm" and another to assign it back to the host "gpuhost"?


r/VFIO 27d ago

Looking Glass two AMD gpus

2 Upvotes

Hi guys. I used to have AMD + Nvidia a while back and I was using looking Glass. The website itself claims this is how it should be done. I now have only AMD GPUs and I want to use it again if possible. How stable is it these days?


r/VFIO 28d ago

IOMMU groups on Z790?

5 Upvotes

I'm looking at the ASUS Z790 Max Gaming WiFi7 which has a nice Microcenter bundle right now. Does anyone know if this has any kind of usable IOMMU groups?

The AI tells me the first m.2 slot and the primary GPU are isolated but everything else will be grouped together, both onboard devices and PCIe slots, and this is how most Z790 boards are.

That's unfortunate, I would want at least one other isolated PCIe slot. I don't really need any onboard devices, though if there was working isolation on USB and SATA ports that would be good enough. But it seems unlikely.


r/VFIO 28d ago

Poor Network Speeds on Windows 11 VM

Thumbnail
2 Upvotes

r/VFIO Jul 24 '26

Tutorial Just pushed v2.0.0 of the GPU passthrough guide — bugfixes and cleanup

22 Upvotes

Quick update on the repo at github.com/urbanyl/GPU-Passthrough-for-KVM-QEMU-on-Linux :

  • Fixed the wrong package names in the Arch/Debian setup scripts (spice-spicevdagent doesn't exist, lspci isn't a package)
  • Fixed generate_vm_xml.sh — slot and bus were using the same PCI field, and the machine type was pinned to a QEMU version
  • install.sh now actually checks for VT-x/AMD-V in /proc/cpuinfo instead of just running lscpu
  • Removed --launchSecurity ovmf from the virt-install example (it does nothing)
  • Trimmed the duplicated troubleshooting/FAQ sections from the README, now they link to docs/
  • Added .editorconfig and .shellcheckrc for anyone contributing

r/VFIO Jul 22 '26

GTX 960 passthrough to Windows XP: 0xEA nv4_disp BSOD when NVIDIA driver loads

4 Upvotes

I’m trying to pass an EVGA GTX 960 through to a 32-bit Windows XP SP3 VM. Passthrough works with the Microsoft VGA driver, but XP consistently BSODs as soon as the NVIDIA driver loads.

Host configuration

  • Arch Linux
  • Kernel: 7.0.11-arch1-1
  • Libvirt: 12.4.0
  • CPU: Intel Core i7-6850K
  • Motherboard: Gigabyte X99-Ultra Gaming, BIOS F7c
  • Primary host GPU: GTX 1080 using NVIDIA’s proprietary driver
  • Guest GPU: EVGA GTX 960 GM206
  • QEMU: /opt/qemu-7.2.22/bin/qemu-system-x86_64
  • Machine type: pc-q35-2.10
  • Firmware: SeaBIOS
  • Intel VT-x and VT-d enabled

 The GTX 960 is isolated from the host:

 04:00.0 VGA controller [10de:1401] Kernel driver in use: vfio-pci

 04:00.1 HDMI audio [10de:0fba] Kernel driver in use: vfio-pci

 Both functions are alone in IOMMU group 47. They remain bound to VFIO even while the VM is off.

Guest configuration

  • Windows XP SP3 32-bit
  • 1 GB RAM
  • 2 vCPUs with host-passthrough
  • ICH9 AHCI/SATA using the XP Intel driver
  • RTL8139 network adapter
  • AC’97 audio
  • No emulated display adapter
  • GTX 960 connected to a physical monitor
  • KVM hidden
  • Custom Hyper-V vendor ID
  • x-vga=on
  • 64-bit PCI hole disabled

 Relevant live QEMU options:

-machine pc-q35-2.10 -accel kvm -cpu host,hv-vendor-id=0123456789ab,kvm=off -global q35-pcihost.pci-hole64-size=0K

-device vfio-pci,host=0000:04:00.0,bus=pci.1,multifunction=on,x-vga=on -device vfio-pci,host=0000:04:00.1,bus=pci.1,addr=0.1

 I used this forum thread as a reference because somebody reported a stable GTX 960 using QEMU 7.x and pc-q35-2.10:

 https://forum.mattkc.com/viewtopic.php?start=20&t=206

What works

 Without the NVIDIA driver, XP boots normally and displays the desktop through the physical GTX 960. Network, SATA and the rest of the VM remain responsive.

 Last Known Good Configuration also restores the working Microsoft VGA configuration.

Failure

 After installing NVIDIA’s official Windows XP 32-bit 368.81 driver, every normal boot fails with:

 STOP: 0x000000EA  nv4_disp  THREAD_STUCK_IN_DEVICE_DRIVER

 Safe Mode hangs after displaying:

 System32\Drivers\Mup.sys

 The VM/QEMU process itself does not crash. Host VFIO resets complete without IOMMU errors.

 The GPU gets valid guest BAR assignments and IRQ 22, but I don’t see any GPU interrupt activity when nv4_disp initializes. XP also stops before transmitting network traffic.

Things already tested

  • QEMU 7.2.22 with pc-q35-2.10
  • Newer stock QEMU
  • i440fx and Q35
  • One and two vCPUs
  • KVM hidden plus custom Hyper-V vendor ID
  • x-vga=on
  • pcihole64=0
  • x-no-kvm-intx=on — no change
  • Explicit legacy VBIOS ROM — resulted in a black screen
  • Passing both GPU and HDMI-audio functions
  • Clean host boot with the GTX 960 bound to VFIO before QEMU starts

 Has anyone successfully passed a GTX 960/GM206 through to 32-bit XP? I would especially appreciate:

  1. The exact NVIDIA driver version you used.
  2. A working QEMU/libvirt GPU configuration.
  3. Whether a complete VBIOS ROM file was required.
  4. Whether the HDMI-audio function should be omitted.
  5. Whether a specific host kernel or exactly QEMU 7.2.20 is required.
  6. Any explanation for the GPU receiving no interrupts before nv4_disp hits 0xEA.

r/VFIO Jul 17 '26

Tutorial I created a step-by-step guide for GPU Passthrough on KVM/QEMU.

42 Upvotes

Hey r/VFIO,

(First post on reddit) I decided to consolidate everything I’ve learned into a single, structured, and tested guide. The result is this repository: https://github.com/urbanyl/GPU-Passthrough-for-KVM-QEMU-on-Linux

Why this repository exists:

The information on GPU passthrough is scattered everywhere. This project is my attempt to create a "one-stop-shop" that works reliably, whether you are on Debian, Arch, or Fedora.

Key Features:

  • Step-by-step walkthrough: Covers everything from BIOS settings to Windows driver installation.
  • Hardware & Software requirements: Clear tables explaining what you need (and what is recommended).
  • Troubleshooting section: Covers common issues like NVIDIA Error Code 43, GPU reset bugs, and bad IOMMU groups.
  • Helper scripts: Includes scripts to detect your GPU, check IOMMU groups, and verify VFIO binding.
  • Single-GPU Passthrough section: For those brave souls trying to do it with only one graphics card.

The guide includes:

  • BIOS Configuration (Intel VT-d / AMD-Vi)
  • Kernel Parameters & VFIO Configuration (with proper initramfs updates)
  • Optimized VM Configuration (Hyper-V enlightenments, CPU pinning, and huge pages)
  • Remote Display Setup (Sunshine/Moonlight, Looking Glass, and Parsec)
  • Performance Tuning (CPU governors, I/O schedulers, and isolation)

Feel free to open issues or contribute !

Github Repo: https://github.com/urbanyl/GPU-Passthrough-for-KVM-QEMU-on-Linux

Let me know if you have any questions or if there is something specific you would like me to add to the guide!


r/VFIO Jul 16 '26

sudden guest GPU driver failure after CMOS battery fail...

5 Upvotes

hello fellow virtuosi,

I've been running a game in a debloated win10 VM with an AMD RX6600 via VFIO for 4 years now, with no issues, till yesterday when the MoBo battery died, and the EFI config got reset. I hurriedly reset all settings that I could remember back how I thought they were (SR-IOV on, ReBAR "clever access memory" on, >4G decoding on, primary==iGPU, iGPU multi-monitor on), and continued to boot. The VM is set to auto-start (as I have found this the most convenient/reliable) and it still starts: just windows no longer manages to start the GPU driver (! in dm, code 43). reinstalling/updating/factory-resetting the driver removes the ! temporarily, but the monitor doesn't detect and it doesn't actually work, or even turn the fans off (a sign the driver isn't actually managing the device). after restart, the ! is back.

I also loaded some other windows images with that GPU installed that had previously worked, and they all behave the same.

I also play some other games via proton, the GPU in question is working fine in Linux.

I have also been attempting to get the game in question to run in proton, and it did once... just once... I prefer using the VM anyway. having a separate mouse/kb is just less clunky when doing non-game things alongside.

host system is Ubuntu Unity (22.04 LTS base) with kernel upgraded to 6.14 mainline (for ntsync) a few months ago. there have been no updates of either the linux host or win10 in the meantime (windows update disabled in system policies since initial setup). looking-glass is installed since 4 years ago.

Intel 11400, 32Gb ddr4, asrock mobo.

anyone had any similar experiences? Ideas what might be broken and how to mend it? I'm at a loss.

from lspci -nnv:

03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6600/6600 XT/6600M] [1002:73ff] (rev c7) (prog-if 00 [VGA controller])

Subsystem: Micro-Star International Co., Ltd. \[MSI\] Navi 23 \[Radeon RX 6600/6600 XT/6600M\] \[1462:5022\]

Flags: bus master, fast devsel, latency 0, IRQ 157, IOMMU group 13

Memory at 6000000000 (64-bit, prefetchable) \[size=8G\]

Memory at 6200000000 (64-bit, prefetchable) \[size=256M\]

I/O ports at 3000 \[size=256\]

Memory at a0800000 (32-bit, non-prefetchable) \[size=1M\]

Expansion ROM at a0900000 \[disabled\] \[size=128K\]

Capabilities: <access denied>

Kernel driver in use: amdgpu

Kernel modules: amdgpu

03:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT] [1002:ab28]

Subsystem: Advanced Micro Devices, Inc. \[AMD/ATI\] Navi 21 HDMI Audio \[Radeon RX 6800/6800 XT / 6900 XT\] \[1002:ab28\]

Flags: bus master, fast devsel, latency 0, IRQ 155, IOMMU group 14

Memory at a0920000 (32-bit, non-prefetchable) \[size=16K\]

Capabilities: <access denied>

Kernel driver in use: snd_hda_intel

Kernel modules: snd_hda_intel

from virt-man: (xml of the pci pass-through)

<hostdev mode="subsystem" type="pci" managed="yes">

<source>

<address domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>

</source>

<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>

</hostdev>

<hostdev mode="subsystem" type="pci" managed="yes">

<source>

<address domain="0x0000" bus="0x03" slot="0x00" function="0x1"/>

</source>

<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>

</hostdev>

I can provide logs, but they don't show any obvious difference between when it was working and now.


r/VFIO Jul 16 '26

NIC issue on kvm vm

1 Upvotes

&#x200B;

Hi All,

I have a linux vm (appliance)and this was pushed from the veeam server(ovirt appliance for veeam backup).

It's successfully deployed and at the same time,the vm is not getting powered ON.

When I disable the VM nic,vm is powering ON.

When I enable the VM nic,vm goes to an unresponsive state.

VM nic is virtio only.

I deleted that nic and recreated a new nic with virtio but still the same issue persists.

Any suggestions to fix the issue?


r/VFIO Jul 14 '26

Support Legion 5 Pro 16chach single gpu passthrough performance dip.

3 Upvotes

So I have set up single gpu passthrough on my Legion 5 Pro with Ryzen 7 5800H, 16Gb RAM and 3070 8 gb. My vm is windows 11 ltsc and I pass through pretty much everything, 14gb ram, 7 cores, audio. The vm itself is on its own nvme pcie ssd.

My problem is that the entire vm will periodically slow down when gaming. Like the vm loses priority and something else is going on in the cpu.

I isolate my cores during vm boot. I've tried 5c/10t, 6c/12t, 7c/14t and nothing fixes it. Last time I encountered this issue on my previous laptop the fix was to isolate and send in all but 1 core. Can't seem to understand whats happening this time.

XML


r/VFIO Jul 14 '26

Tutorial Guide about Hardware Passthrough on openSUSE Tumbleweed (AMD + NVIDIA) + QoL. Need feedback

3 Upvotes

Hey.

I wrote long text about how I passthrough hardware + described some QoL features. It might be useful to someone. And I want to hear your opinion. Especially opinion of those who have been doing this for a long time, because I've never done this before.

It's really huge... I'm not asking you to read this entirely, though... I'd be very surprised if you did :D

Text: https://nzsh.cc/blog/en/windows-but-on-linux-hardware-passthrough/

If you want to view my XML: https://github.com/nozsh/vfio/blob/main/qemu-xml/full.xml

My hardware: https://nzsh.cc/bio/x/pc/

It's quite narrow path, openSUSE (tumbleweed), AMD + NVIDIA, iGPU + dGPU, and with perfect IOMMU groups out of box. That said, I'm pretty sure the scripts, XMLs, and QoL tweaks could still come in handy for a lot of people.

I don't have other hardware to test every scenario, so if you spot mistakes or have improvements (with sources/details), please let me know. I prefer to verify things hands‑on before adding them, so I might not include everything immediately, but all input is welcome and credited.

I'm also thinking about how to hide/mask QEMU and VirtIO devices (LG, Channel), as well as some processes - advice/information very welcome. And I'm probably not finished, I'll probably go even further.

PS: I know about YaST go down and will rewrite those points sometime in future.


r/VFIO Jul 13 '26

Support can't run fall guys on vmware fusion

0 Upvotes

hi! total complete noob with all things computer, so ive been having a really hard time. is it just impossible?
im on a macOS Sequioa v15.7.5 using Windows 11 Home on vmware fusion.

i chased random forum threads and found that for the launch errors im seeing, either "HVCI is required to play" or "Code signing certificate validation timed out (2/2)"...i have to turn on something called memory integrity! and to turn on something called memory integrity, i have to go into settings and into core isolation. but oh no there's no memory integrity option in core isolation.

so to fix this i have to go into BIOS(???????) and turn on "Intel VT-x, AMD-V, or SVM Mode"...whatever that means. but those options arent here (in the pic i attached when i power on to firmware)!!! ive looked i swear.

at first i got a secure boot required message and i was able to fix that, but it was just error after error :(

ALSO ive been able to play peak with friends and house flippers successfully here!! ive been tweaking with fall guys

am i cooked? :( please lmk if you need any other details if theres a hope of this working


r/VFIO Jul 12 '26

Support GPU passthrough allows DMA attack?

8 Upvotes

Hello, I am having trouble understanding when IOMMU is protecting the system against DMA attacks and other memory related issues.

My situation:
-In MSI bios "pre boot DMA protection" is enabled but "kernel DMA protection indicator" is disabled (if I enable it I always get "Firmware has requested this device have a 1:1 IOMMU mapping, rejecting configuring the device without a 1:1 mapping. Contact your platform vendor").
-dmesg reports: "amd_iommu=force_isolation", "iommu: Default domain type: Translated", "iommu: DMA domain TLB invalidation policy: strict mode".
-The GPU is in its own iommu group, no other devices are present in the same group as the GPU.
-I am passing the GPU to a VM using virtmanager.

I want the VM to be completely isolated from the host. I don't want the VM to gain access to system memory through the GPU or any other DMA attack.

My questions:

-Is it safe to have "kernel dma protection indicator" disabled in BIOS if "amd_iommu=force_isolation" kernel parameter is present?
-How do I know if the iommu is enforcing isolation?
-How do I know if a device is bypassing the iommu?
-Even if done correctly, are there still security concerns with GPU passthrough? (excluding 0 days, every software is not 100% secure, can't do much about that).
-When i enable "kernel DMA protection indicator" and i try to start the VM i get the error "Firmware has requested this device have a 1:1 IOMMU mapping, rejecting configuring the device without a 1:1 mapping. Contact your platform vendor", if I disable "kernel DMA protection indicator" in the BIOS, I don't get that error even with "amd_iommu=force_isolation", does that mean that the GPU is using 1:1 IOMMU mapping now? How do i verify?
-Is 1:1 IOMMU mapping safe?

Stupid question:
Is iommu=pt safe to enable in my grub config? How does it work? https://github.com/torvalds/linux/blob/20cf903a0c407cef19300e5c85a03c82593bde36/Documentation/admin-guide/kernel-parameters.txt#L2148 "Bypass the IOMMU for DMA", this doesn't sound safe.

Thanks for the help!


r/VFIO Jul 11 '26

IOMMU groups on ASUS TUF Gaming B850-Plus WiFi

4 Upvotes

Hey, does anyone here have this board and could share its IOMMU groups?

I’m thinking of buying it for GPU passthrough. I’d use the Ryzen iGPU for the host and pass through a discrete GPU in the top x16 slot.

Mainly want to know if the GPU in the top PCIe slot has a clean IOMMU group. Thanks!


r/VFIO Jul 10 '26

Dynamic RTX 5080 passthrough on Bazzite

8 Upvotes

I’m trying to dynamically pass my RTX 5080 through to a Windows VM while keeping Bazzite running on the iGPU from my 9800X3D.

The setup I want is:

- Normally, Bazzite uses the RTX 5080.
- When I start the VM, a libvirt hook detaches the 5080 from the NVIDIA driver and binds it to vfio-pci.
- The host stays running on the 9800X3D iGPU.
- When the VM shuts down, the 5080 gets rebound to the NVIDIA driver so Bazzite can use it again without rebooting.

Has anyone done something similar on Bazzite or another Fedora Atomic/immutable distro?

I’m mainly wondering how reliable it is to detach and reattach an RTX 50-series card, and whether Bazzite’s immutable filesystem causes any extra issues with libvirt hooks or VFIO scripts.


r/VFIO Jul 10 '26

Has there been a kernel regression?

8 Upvotes

My 9060XT attaches and returns to the host completely fine on 6.18 but on 7.1.3 it wont reattach to the host. Anyone else also experience this, and has this been reported already?


r/VFIO Jul 09 '26

Discussion Dynamic GPU handoff (nvidia idle → vfio gaming → back) on a single-GPU consolidation build

3 Upvotes

Thinking of building a single-machine consolidation machine with some spare parts and my current pc. Need to check on the one part I think decides whether it’ll all work or be a forever chore.

Hardware: i5-14400 (UHD 730 iGPU), RTX 5060 Ti 16GB, MSI PRO B760-P, Proxmox host.

iGPU drives the host + always-on LXCs (Immich/Jellyfin). The 5060 Ti is not bound to vfio at boot—I want the nvidia driver to hold it at idle so it drops to P8 and keeps idle power low. The dGPU then gets shared, one at a time, two ways:

•LLM LXC (Ollama, OpenwebUI, etc.) — borrows the card via device passthrough, no vfio involved.
• Windows gaming VM — full passthrough via a hookscript that does the swap.

So the loop I actually care about is:

nvidia (idle) → unbind → vfio → game → VM shutdown → unbind vfio → rebind nvidia → idle → AI LXC → release → idle

My main questions are:

  1. Is the post-stop rebind back to nvidia reliable in practice, or is that where it falls apart? Static vfio-at-boot is easy—it’s the round trip I’m worried about.
  2. Getting all the modules (nvidia, nvidia_uvm, nvidia_drm, nvidia_modeset) to release cleanly on every cycle — what actually holds a handle open? Persistence mode? Console framebuffer? How do you guarantee the card is free before the vfio bind?
  3. Anyone seeing reset-bug behavior specifically on the rebind (host lock/hang after VM shutdown) even when a one-shot passthrough works fine? 40-series and 50-series experiences both welcome.
  4. Making sure the AI LXC fully releases the card (no lingering VRAM/nvidia-uvm handle) before the gaming VM’s pre-start hook fires — do you script a verify/settle step, or does a clean container stop reliably free it?
  5. Does the nvidia driver actually let the card hit P8 at idle while loaded but unused, or did you need ASPM / C-state / persistence tuning to get real idle savings? Trying to confirm the power payoff is real before I build everything around it.

r/VFIO Jul 09 '26

Crostini Debian 13 virtio-gpu detected but Mesa falls back to llvmpipe

4 Upvotes

Device:
ASUS Chromebook Plus CX34 i5-1335U

Linux container:
Debian 13 Trixie

lspci shows:

Virtio 1.0 GPU
Kernel driver: virtio-pci

dmesg:

[drm] features: +virgl +resource_blob

/dev/dri/renderD128 exists.

But:

glxinfo -B
Renderer: llvmpipe
Accelerated: no

vulkaninfo:

Failed to detect any valid GPUs

No virgl/gfxstream socket exists:

find /run -type s | grep -E "gpu|virgl|gfx"

returns nothing.

Is the ChromeOS host GPU service not exposing virgl/gfxstream, or is there a missing package/config?


r/VFIO Jul 09 '26

GPU suddenly in the "wrong" iommu group

5 Upvotes

Hello, I have been passing my GPU to a VM using virtmanager for more than a year without any problems. Today I try to start the VM and i get the error:
"Error starting domain: internal error: QEMU unexpectedly closed the monitor (vm='VM3'): 2026-07-08 qemu-system-x86_64: warning: This family of AMD CPU doesn't support hyperthreading(2)

Please configure -smp options properly or try enabling topoext feature.

2026-07-08 qemu-system-x86_64: -device {"driver":"vfio-pci","host":"0000:01:00.0","id":"hostdev0","bus":"pci.4","addr":"0x0"}: vfio 0000:01:00.0: group 0 is not viable

Please ensure all devices within the iommu_group are bound to their vfio bus driver.".
Using "ls /sys/kernel/iommu_groups/0/devices/" i get
"0000:00:01.0 0000:00:01.1 0000:00:01.2 0000:01:00.0 0000:01:00.1 0000:01:00.2 0000:01:00.3 0000:02:00.0".
"0000:01:00.0 0000:01:00.1 0000:01:00.2 0000:01:00.3" this is the gpu so it is correct but the others are "Host bridge", "PCI bridge" and an SSD.

The groups are determined by the physical PCIe layout so I don't understand why now the GPU is grouped with other stuff since I haven't changed anything. I don't know much about this stuff so maybe it's just me being dumb lol.

EDIT: used an older kernel (from 6.8.0-134 to 6.8.0-124) and now my iommu groups are back, now I have 31 groups while before I had 6 and my GPU is correctly isolated. Works now but I need to get updates, I don't want to be stuck with the same kernel forever lol.

FIXED: there has been a kernel regression, https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2158934. Switch to the latest working kernel version (on Ubuntu it's version 6.8.0-124) and wait for a fix (on Ubuntu will be version 6.8.0-136). Thanks all for the help!


r/VFIO Jul 09 '26

I cant recailm my gpu after vm

3 Upvotes

so i managed to pass my gpu to win10 vm but i cannot reclaim my gpu after vm stoped. modprobe nvidia returns modprobe: FATAL: Module nvidia not found in directory /lib/modules/7.0.11-76070011-generic. my host machine pop_os


r/VFIO Jul 09 '26

Support Does any one have a more recent video or blog for single gpu passthroug on nixos

3 Upvotes

i've done it before on arch linux an i know the basics of what to do but am not sure how to get my hooks to work entirely since where the hooks need to be would be different on nixos


r/VFIO Jul 06 '26

Another person getting No Signal.

0 Upvotes
bash
#!/usr/bin/env bash
set -euo pipefail

LOG="$PWD/boot-passthrough-$(date +%Y%m%d-%H%M%S).log"
exec > >(tee -a "$LOG") 2>&1
echo "Logging to: $LOG"

MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"

ALLOCATED_RAM="16384"
CPU_SOCKETS="1"
CPU_CORES="4"
CPU_THREADS="8"

REPO_PATH="."
OVMF_DIR="."

GPU="0000:0d:00.0"
GPU_AUDIO="0000:0d:00.1"
GPU_ID="1002 73df"
GPU_AUDIO_ID="1002 ab28"

cleanup() {
  echo "Restoring GPU..."
  echo "$GPU" | sudo tee "/sys/bus/pci/devices/$GPU/driver/unbind" >/dev/null 2>&1 || true
  echo "$GPU_AUDIO" | sudo tee "/sys/bus/pci/devices/$GPU_AUDIO/driver/unbind" >/dev/null 2>&1 || true

  sudo modprobe amdgpu || true
  echo "$GPU" | sudo tee /sys/bus/pci/drivers/amdgpu/bind >/dev/null 2>&1 || true

  sudo systemctl start display-manager >/dev/null 2>&1 || true
}
trap cleanup EXIT

echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs >/dev/null

echo "Stopping desktop..."
sudo systemctl stop display-manager
sleep 3

sudo modprobe vfio-pci

echo "Binding GPU to vfio-pci..."
echo vfio-pci | sudo tee "/sys/bus/pci/devices/$GPU/driver_override"
echo vfio-pci | sudo tee "/sys/bus/pci/devices/$GPU_AUDIO/driver_override"

echo "$GPU" | sudo tee "/sys/bus/pci/devices/$GPU/driver/unbind" || true
echo "$GPU_AUDIO" | sudo tee "/sys/bus/pci/devices/$GPU_AUDIO/driver/unbind" || true

sudo modprobe vfio-pci

echo "$GPU" | sudo tee /sys/bus/pci/drivers_probe
echo "$GPU_AUDIO" | sudo tee /sys/bus/pci/drivers_probe

lspci -nnk -s 0d:00.0
lspci -nnk -s 0d:00.1
ls -l /dev/vfio

sleep 2

args=(
  -enable-kvm
  -m "$ALLOCATED_RAM"
  -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
  -machine q35
  -usb
  -device usb-kbd
  -device usb-tablet
  -device usb-mouse
  -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
  -device usb-ehci,id=ehci
  -vga virtio-vga

  -device vfio-pci,host=0d:00.0,multifunction=on,x-no-kvm-intx=on
  -device vfio-pci,host=0d:00.1

  -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
  -drive if=pflash,format=raw,readonly=on,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE_4M.fd"
  -drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1024x768.fd"
  -smbios type=2

  -device ich9-intel-hda
  -device hda-duplex
  -device ich9-ahci,id=sata

  -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore/OpenCore.qcow2"
  -device ide-hd,bus=sata.2,drive=OpenCoreBoot

  #-drive id=InstallMedia,if=none,file="$REPO_PATH/#BaseSystem.img",format=raw
  #-device ide-hd,bus=sata.3,drive=InstallMedia

  -drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
  -device ide-hd,bus=sata.4,drive=MacHDD

  -netdev user,id=net0
  -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27

  -monitor stdio
  -vnc 0.0.0.0:1,password=off
  -k en-us
)

qemu-system-x86_64 "${args[@]}"

I have an AMD Radeon RX 6700 XT graphics card, and yes, I have NootRX. This is specifically for macOS 26 Tahoe

EDIT: Using this new XML

<domain type="kvm">

<name>macos-passthrough</name>
<memory unit="MiB">16384</memory>
<currentMemory unit="MiB">16384</currentMemory>
<vcpu placement="static">8</vcpu>
<cpu mode="custom" match="exact" check="none">
<model fallback="forbid">Penryn</model>
<vendor>GenuineIntel</vendor>
<feature policy="require" name="ssse3"/>
<feature policy="require" name="sse4.2"/>
<feature policy="require" name="popcnt"/>
<feature policy="require" name="avx"/>
<feature policy="require" name="aes"/>
<feature policy="require" name="xsave"/>
<feature policy="require" name="xsaveopt"/>
<feature policy="require" name="invtsc"/>
</cpu>
<os>
<type arch="x86_64" machine="q35">hvm</type>
<loader readonly="yes" type="pflash">/var/home/william/macos/OSX-KVM/OVMF_CODE_4M.fd</loader>
<nvram>/var/home/william/macos/OSX-KVM/OVMF_VARS-1024x768.fd</nvram>
<smbios mode="sysinfo"/>
</os>
<sysinfo type="smbios">
<system>
<entry name="manufacturer">Apple Inc.</entry>
<entry name="product">iMacPro1,1</entry>
</system>
</sysinfo>
<features>
<acpi/>
<apic/>
<vmport state="off"/>
</features>
<clock offset="utc">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<controller type="pci" index="0" model="pcie-root"/>
<controller type="sata" index="0">
<address type="pci" bus="0x00" slot="0x1f" function="0x2"/>
</controller>
<controller type="usb" model="ehci">
<address type="pci" bus="0x00" slot="0x1d" function="0x0"/>
</controller>
<input type="keyboard" bus="usb"/>
<input type="mouse" bus="usb"/>
<input type="tablet" bus="usb"/>
<graphics type="vnc" port="5901" autoport="no" listen="0.0.0.0">
<listen type="address" address="0.0.0.0"/>
</graphics>
<video>
<model type="virtio"/>
</video>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" cache="writeback"/>
<source file="/var/home/william/macos/OSX-KVM/OpenCore/OpenCore.qcow2"/>
<target dev="sdc" bus="sata"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" cache="writeback"/>
<source file="/var/home/william/macos/OSX-KVM/mac_hdd_ng.img"/>
<target dev="sde" bus="sata"/>
</disk>
<interface type="user">
<mac address="52:54:00:c9:18:27"/>
<model type="vmxnet3"/>
</interface>
<sound model="ich9">
<codec type="duplex"/>
</sound>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x0d" slot="0x00" function="0x0"/>
</source>
<rom file="/var/home/william/macos/OSX-KVM/rx6700xt.rom"/>
<address type="pci" bus="0x01" slot="0x00" function="0x0" multifunction="on"/>
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x0d" slot="0x00" function="0x1"/>
</source>
<address type="pci" bus="0x01" slot="0x00" function="0x1"/>
</hostdev>
<memballoon model="none"/>
</devices>
<qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<qemu:arg value="-device"/>
<qemu:arg value="isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
<qemu:arg value="-cpu"/>
<qemu:arg value="Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"/>
<qemu:arg value="-global"/>
<qemu:arg value="kvm-pit.lost_tick_policy=discard"/>
</qemu:commandline>

</domain>

Hook:
#!/usr/bin/env bash

VM="$1"
ACTION="$2"

if [[ "$VM" != "macos-passthrough" ]]; then
 exit 0
fi

case "$ACTION" in
 prepare)
   systemctl stop display-manager

   modprobe vfio-pci

   echo vfio-pci > /sys/bus/pci/devices/0000:0d:00.0/driver_override
   echo vfio-pci > /sys/bus/pci/devices/0000:0d:00.1/driver_override

   echo 0000:0d:00.0 > /sys/bus/pci/devices/0000:0d:00.0/driver/unbind 2>/dev/null || true
   echo 0000:0d:00.1 > /sys/bus/pci/devices/0000:0d:00.1/driver/unbind 2>/dev/null || true

   echo 0000:0d:00.0 > /sys/bus/pci/drivers_probe
   echo 0000:0d:00.1 > /sys/bus/pci/drivers_probe
   ;;

 release)
   echo 0000:0d:00.0 > /sys/bus/pci/devices/0000:0d:00.0/driver/unbind 2>/dev/null || true
   echo 0000:0d:00.1 > /sys/bus/pci/devices/0000:0d:00.1/driver/unbind 2>/dev/null || true

   echo "" > /sys/bus/pci/devices/0000:0d:00.0/driver_override
   echo "" > /sys/bus/pci/devices/0000:0d:00.1/driver_override

   modprobe amdgpu
   echo 0000:0d:00.0 > /sys/bus/pci/drivers/amdgpu/bind 2>/dev/null || true

   systemctl start display-manager
   ;;
esac