3 min read

The VFIO adventure... My wondering into the world of Virtual Machine Gaming... (Introduction)

The VFIO adventure... My wondering into the world of Virtual Machine Gaming... (Introduction)

Hello all,

This will be a multipart series of  love, fantastic suspense, tear filled and headache filled journey into the wonder of VFIO gaming. Yes some hearts were broken, yes I've aged 10 fold in the 2 years of starting this journey, and Yes... Oh so very much yes.... It's.... STILL... NOT... OVER!!!!

...Well... Now with that out of the way... Let's start with why I began this journey... Well... Much like everyone else who gets into VFIO, I wanted to run multiple systems with near 0 performance impact on the VM. Plus, I was heavily inspired by Linux Tech Tips "7 Gamer's, 1 CPU" series, but I didn't have a $100,000 system. So I had to start a bit smaller...

Round 1! FIGHT!

I started out using my first proper PC build in almost a decade. My current desktop at the time was an old custom with I think a Intel i5 4650? Not sure, but it ran DDR3 1600MT/s RAM and an 2.5 SSD. Played games "OK". But was time for a upgrade. So I splurged on some new, fancy AMD Ryzen hardware I've heard about, and got to work. Below is the basics of what I remember from the build.

Host Hardware (Q3 2020):‌‌
- Samsung 970 Evo Plus 1TB (Arch "Manjaro Linux)"‌‌
-GTX 780 is the Host (Linux) GPU.‌‌
-AMD Ryzen 3700x (8 Core, 16 Threads)
-Asus Prime x570-p MOBO‌‌
-G.Skill 2x32GB DDR4-3600 CL18 RAM

Windows Guest Passthrough:‌
‌-32GB Allocated to the VM.‌‌
-Onboard Intel GiB NIC‌‌
-Nvidia GTX 1080 Turbo
-PCIe USB card (for native USB plug-n-play)‌‌
-NVME Samsung Evo 1TB - Passthrough

Software:‌‌
-Started out with Manjaro Linux, then Fedora 34
-VFIO (Virtual Function I/O, Native built-in)‌‌
-KVM (Kernel Virtual Machine, built-in to the Linux Kernel)‌‌
-QEMU (Open-source Hypervisor, CLI)‌
‌-Libvirt (Open Source API to manage hypervisors, like QEMU, VMWare, etc...)‌‌
-Virt-Manager (GUI Application to manage all the above software pieces.)

This started out rather nicely, however, as this was my first try at the new thing, I fumbled a great deal... Like, it was not fun... First of all, the mobo I bought only had 1 full x16 PCIe slot, with the only other slot being x4. So... Umm... Yeah, Great success!!! (lol, no, actually great failure, with fireworks...).

The next thing to fail was since I ran Manjaro, I feared for my life at ever update/upgrade... And it bit me in the boot drive... I ran "pacman -Syyu" and let the fun start... Reboot... and oh look, Nvidia Drivers not found, the WDM could not find the drivers. Turns out ( I found this out much later), that because I black listed the nouveau drivers, the WDM could not load... But, hey at this point I moved on... Changed out the Mobo for a Asus Prime x570-Pro, with proper Bifurcation support and 2 full size x16 (x8/x8) slots, and moved onto Fedora 34, following Wendel's Level1Tech's post here: Fedora 33: Ultimiate VFIO Guide for 2020/2021 [WIP] - Wikis & How-to Guides - Level1Techs Forums
Had much better success, but alas, failure once more... Same issue with nouveau drivers and the WM...

So with round 1 with the opponent VFIO, was over and it's 1 'n 0... But this has been a great journey that has taken me a long time and I've learned a great deal, and I really can't say it's been all bad. In the coming posts within this series, I will eventually have my "Sorksation". It's still not entirely perfect, but it's very much near native... And although it's had ever changing hardware, I very much can't wait for the next aspect... getting the thing to work in Ubuntu 22.04!

Update: Round 2-3 were won!!!