Seems like we get a new thread almost every day with people having the same problems setting up a passthrough VM. The Purpose of this Wiki is to be a resource and reference for people who want to set up a VFIO system, or have one already and need advice or Tutorials for the various facets of that system.
I will be adding categories like ‘input’ ‘screens’ etc – these can be expanded as necessary.
Guides on setting up a passthrough VM
The archwiki guide:
This is the gold standard in passthrough setup tutorials. It is by and large the most complete, best maintained, and most accurate reference available. The vast majority of the information is completely distro agnostic, with the single caveat being
mkinipcio being distro specific (
dracut on fedora etc)
This should always be your first reference.
Information on various ill documented or not-oft-explained aspects of VFIO. Benchmarks should also be put here as the effectiveness of many commonly suggested tweaks are not very well characterized.
Hardware buying and quirk guide:
Some helpful tips about improving your gaming VM setup. We cover backups, steam archive separation, configuration, and hardware to pick up to improve new users' experiences.
resources for people looking for keyboard/mouse input sharing solutions or other input-related topics.
Information on best practices for images, VirtIO, etc.
ZFS has massive amounts of utility to Linux users - ZVols, LZ4 Compression support, ARC/L2ARC and ZIL caching, and much more. These features can save massive amounts of time dealing with storage configurations.
VFIO Topics pertaining to your VM’s display, native or otherwise.
What is looking glass? It is a program that uses DXGI (or NvFBC if you're on Quadros or better on Nvidia) to directly capture what is displayed on a video card in a windows virtual machine and then display that on a QEMU/KVM Linux Host in near real-time.
Aren't there programs like Remote Desktop, VNC, etc that do this?
Those programs provide remote access, yes, but in this case we are copying uncompressed the actual RGBA frames from the render pipeline on the virtual machine for display on the host. It seems similar, but is entirely different. For one we have extremely low latency (probably even less as time goes on since most of our latency seems to be down to the render pipeline in vendors' drivers rather than our own code...).
If you are using IOMMU graphics in a virtual machine, and want to use productivity apps on that windows virtual machine at full speed/native performance, you should give this project a look.
This program is *alpha* quality. It's got bugs. Lots of bugs. It might be more bugs than substrate at this point (not really, but you know). Please read this thread very carefully before posting for help. Many known issues are posted on
Geoff's site as well.
Note: QEMU currently has a bug in relative-movement mouse pointers that is being worked on. For now, we still recommend using a separate input device (or toggling USB input passthrough between) because of these bugs in QEMU. They’re aware of them, will be fixed soon.
Note2: For now, you probably still need something plugged into the passed-through GPU. This seems to depend, a bit, on the GPU but you can use a secondary input on your monitor (often) but not have to actually switch inputs to that display. We have also tested “dummy” EDID DisplayPort plugs as seen in the video, and those work fine, but it is hard to find dummy plugs that have a wide variety of supported display modes. We’ll probably link to some known good ones soon.
OMG You Guys Rock!
This is the help t…
VM audio resources.
Apparmor, distro specific software, issues, and workarounds.
Tools and Projects
Software that enhances the VFIO experience, or VFIO use cases outside of GPU passthrough
This is a tool that allows users to take advantage of KVMFR, using 3d accelerated VMs without needing a native display