Anyone who follows this website will notice that the tutorials are rather long. In these long tutorials I usually give reference specs, explain basic terms or processes, and expand on the how and why.
I wish I could write short, easy, step by step tutorials titled “GPU passthrough made easy” or the “Quick guide to VFIO bliss”. In fact, there are plenty of those out there in the great Internet. Some of the most popular ones are on Youtube, showing you how to get your Windows gaming VM up and running in no time.
Often enough those short tutorials work fine. And I’m glad to see that many hardware vendors have paid attention and actively support and promote virtualization technology.
What if it’s not working?
There is nothing more frustrating than following a tutorial step-by-step and fail. Creating a virtual machine with GPU passthrough, as an example, is a complicated procedure that has dozens of potential failure points.
Take this example: For some time I promoted the “driver override method” as a robust method to bind a GPU to the vfio-pci driver. Until some users (and I myself) discovered that it doesn’t work anymore on Ubuntu 20.04-based systems. I edited my tutorial and suggested another, grub-based solution.
But I also described why my “new” method cannot always replace my original method. Because if you have two identical GPUs in your PC, the grub-method won’t work.
It’s in the details
Taking the example of the “driver override method” above, one Linux distro may work fine whereas another will fail. I strongly recommend that you stick with your preferred distro. Usually there is a way to make it work.
Here is a list of details to pay attention to:
- Motherboard vendor and model
- Motherboard BIOS release – can influence IOMMU grouping and other things
- CPU model – different CPUs have different features, some are simply unsuitable
- GPU vendor and model
- Kernel release – remember, newer is NOT always better
- Kernel release – VFIO loaded as modules (older kernels) or built-in?
- Linux distribution and version
- QEMU release
- Network/Internet access via wire (Ethernet) or WiFi (wireless)
- Linux security settings such as Apparmor
- USB ports and their association with host/VM
- Screen, USB hub, keyboard, mouse, etc. and how and where they are connected to the PC
I could add more to the list above, but I think you got my point.
When running into problems, try to gather as many details as possible (see list above). See if you find some clues in the log files / journal.
The worst thing you can do is panic and start changing settings randomly without knowing what or why you are changing something. If you do change a setting, document it so you can retract.
My tutorials usually offer suggestions for common issues. You will also find links to other tutorials and forums that can help.
When turning to forums or user groups, provide at least the xml configuration, the Linux distro, kernel release, QEMU release, and some details on your hardware, together with a link to the tutorial you are following.
This allows others to go over your configuration and perhaps find the problem.
Remember: details matter.
4 thoughts on “Why Long Tutorials?”
I have recently found this site and totally appreciate the work and comprehensive details supplied! I am currently looking to get a QEMU Virt Manager setup working correctly with an X570 Aorus Elite, Ryzen 9 5900x, Nvidia 2060 Host running Windows 10 with a AMD Radeon Pro W5500 in Passthrough. 🙂
May be you got it the wrong way round. My tutorial (and probably all other tutorials covering QEMU / virt manager) is about running Linux on the host and Windows 10 (or whatever) in a virtual machine.
I believe the motherboard and CPU should work – I’m using a similar Gigabyte board and CPU. You may need to check the motherboard firmware and perhaps update, though try with the board as is.
First step is to enable IOMMU in the m/b BIOS. I have described this step in my Ryzen 3900X tutorial.
I have no experience with modern AMD GPUs. Since your AMD card is a professional model, it would make sense to assume it supports VGA passthrough. Just bear in mind that while Nvidia has dropped their driver checking for pro/non-pro cards, AMD has recently introduced this nuisance. Again, your running a pro card should not be an issue. If it is, use the same trick that was used for Nvidia cards to hide the fact that it’s running in a VM (it should be described in the tutorial).
I’m now using the virt-manager to create and configure my VMs. It has become more easy that way. Follow the tutorial “Creating a Windows 10 kvm VM on the AMD Ryzen 9 3900X using VGA Passthrough” here: https://www.heiko-sieger.info/creating-a-windows-10-vm-on-the-amd-ryzen-9-3900x-using-qemu-4-0-and-vga-passthrough/
If you run into problems, the Discord VFIO channel is a great source of both information and help from the experts.
Good luck in your endeavors.
Hey Heiko … my mistake I should have typed Linux Host! So far I am a week in and getting a little frustrated but I suppose its the nature of the game lol.
The Radeon Pro GPU I could not get to work in passthrough … I consistently got error 43 even after a supposedly successful driver install. So seeing that most folks seem to be using nvidia gpus in passthrough I changed tact. I finally got an NVIDIA card in Passthrough with the driver loaded correctly … but was still viewing the VM via a QXL so it seemed right in device manager but was getting no performance from the card what so ever. However now the GPU is not loading into the VM due to the error … qemu-system-x86_64: vfio: Unable to power on device, stuck in D3. AAAArgh! … I shall jump on the discord and keep going. 🙂
Error 43 might be related to the Radeon driver checking for a VM. You should apply the workaround used for Nvidia before they dumped the VM check. Check my tutorial here: Creating a Windows 10 kvm VM on the AMD Ryzen 9 3900X using VGA Passthrough – Additional XML Configurations.
Sometimes certain graphics cards require additional steps to make them work. For example, new Nvidia cards require you to pass through modified VBIOS. It’s described in my tutorial. But be careful – don’t try to apply the same solution to an AMD Radeon card. You will need to search the web for vfio or passthrough and the name of your graphics card. Of course, the Discord channel is an excellent source of information and help, but you should first do your homework.
Just don’t get discouraged.