Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

RTX 3090 Passthrough Crashes Under Load – VFIO “Bad address” (-14) [Fixed]

Featured Replies

I thought I'd document a solution to a GPU passthrough problem that took quite a bit of fault-finding to track down.


Unraid 7.3.1, Threadripper 3960X and RTX 3090 passed through to Windows 11. The VM would boot normally, NVIDIA drivers worked, desktop/video playback was stable, but putting the GPU under significant 3D load caused an immediate black screen. VFIO would then report Bad address and D3/power/reset errors, and sometimes the host needed a full power cycle before the GPU could be used again.

The key errors in the Unraid VM/kernel logs were vfio_container_dma_map(...) = -14 (Bad address), often followed by Unable to power on device, stuck in D3 and eventually kvm run failed Bad address.

I ruled out Windows, drivers, VM RAM/hugepages, storage, PCIe Gen4 and eventually the GPU/PSU/slot itself by booting Windows bare-metal and successfully stress-testing the same 3090 at 100% load.

The actual problem turned out to be QEMU placing the GPU's BAR memory at an address outside the usable physical/IOMMU address range of this system. The Threadripper reports a 43-bit physical address width, while QEMU had placed the RTX 3090 BAR1 at a much higher address.

The fix was simply to limit the VM's physical address width to 43 bits in its libvirt CPU configuration. QEMU then relocated the GPU BAR into the appropriate address range.

After that, the exact benchmark that previously crashed almost immediately completed at 100% GPU utilisation, the VFIO/kernel logs remained clean, and subsequent VM shutdown/restart and GPU reassignment also worked normally.

I've written up the troubleshooting, relevant log messages, the XML change and links to similar QEMU/VFIO reports here:

Full write-up: GPU Passthrough Crashes on Unraid – QEMU, IOMMU and Physical Address Width

Hopefully this saves someone else a few hours of chasing what initially looks very much like a GPU reset, power or PCIe stability problem.

Edited by meep

  • meep changed the title to RTX 3090 Passthrough Crashes Under Load – VFIO “Bad address” (-14) [Fixed]

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.