Play games in Windows on Linux! PCI passthrough quick guide

You'll need the patch to separate the VGA and Audio device which are both on 01:00.x

Is the latest debian strech broken? I can install it but it wont boot when using the igpu. But will start with 1080gtx fine.

alright. Skylake............................

I tried to reproduce this in Xubuntu and it doesn't attach the Vfio module to the VGA and Network card which I try to pass thru.
But it does attach it to the Audio part of the GPU. Where could the problem be?

I do not use the ASC patch because I dont need it on Antergos at all so I figured I dont need it here either. Or? There it works flawless. But Antergos uses a different boot loader and the procedure is abit different.
I also prefer not to use Antergos as it tends to be not so stable as xubuntu.

VGA
Kernel driver in use: nouveau
Kernel modules: nvidiafb, nouveau
VGA Audio
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
Ethernet controller: Realtek Semiconductor Co
Kernel driver in use: r8169
Kernel modules: r8169

What exactly I'm missing here? I did follow the quide to the dot.

Perhaps someone can help me:

I configured everything exactly like in the guide but when I try to start the VM, there's no output-signal. The "second" screen stays black with "no signal detected". (I don't have a second monitor yet because I wanted to test all first, so I simply switched the input with plugging the HDMI cable into the graphics cards hdmi bus)

Is it possible, that my Mainboard doesn't support IOMMU? In the UEFI BIOS I can only find the "Virtualization for Intel CPUs" option to activate. There's no other related option to change, only the CPU Virtualization.

I got everything working, though I haven't been able to get audio working through a soundblaster USB dongle. My current workaround is audio streaming via VBAN to my phone and into a pair of headphones, but it's a cludgy and slow solution

Edit: I passed my asmedia USB controller (two ports on the back IO panel) to the VM, got sound working now :smiley:

wat.jpg

Yes, you will need the ACS patch.

For anyone thinking about doing an X99 based build, I highly recommend using Deepin 15.4 over other distros if using an MSI X99S-SLI-PLUS motherboard.

There's a major quirk (at least for me) where every other distro can't handle having a GTX 780 or any older card higher up on the board than a GTX 1070. Watchdog freaks out and the CPU soft locks during boot for most distros in this orientation aside from Deepin!

Finally got mine up and working with Dual E5-2670s, A GTX 1060 for host and a GTX 1070 for guest, getting an issue now with virt-manager whenever I fire up the VM I get output on my second display just fine but always get catapulted into UEFI Shell and all of my storage volumes are BLK(x) and every volume is empty.

I'm running Manjaro so I used the Arch guide on how to do it on the wiki which states : " If the installation process drops you in a UEFI shell right after booting, you may have an invalid EFI boot media. " - Have tried this on two separate iso's for win7 & 8 and still am getting the same issue :confused:

EDIT: I am also using the i440FX chipset option for this VM

Hey Everyone, Let me preface this by saying that I by no means am an expert when it comes to Linux. I find myself fumbling my way through after scrolling through many many forums. I have come across an issue when following this guide. I have successfully got my GPU and GPU audio to appear as being used by VFIO. When I got to install my VM I follow the settings exactly as listed above and get this error "qemu unexperctedly closed the monitor: warning: host doesn't support requested feature: CPUID.01H:EDX.ds [bit 21]" I have checked and double checked that Vt-d and Virtulisation is enabled and working. I have also gone through and checked all entries for spelling errors and such but I am now at a loss. A nudge in the right direction would be appreciated.

TL:DR Everything appears to work till final install gives this error "qemu unexperctedly closed the monitor: warning: host doesn't support requested feature: CPUID.01H:EDX.ds [bit 21]"

I can't believe this can't be done with identical gpus :disappointed_relieved:. What a silly limitation.

Could someone please assist me:
I followed the guide, but I get stuck when Installing Windows, right after the installation reboots into the newly installed windows. I'll only get a black screen and the cpu usage of the vm remains constant and does not react to any input anymore.
This happens in windows 7, 8.1, 10.
What do I do wrong? How can I find out if I did everything correct?
Thanks in advance for your help.

Interestingly each time i kill the vm and restart it, i got a few steps further, sometimes... now I actually managed to boot into win10. now i just need to fix the drivers and network and i should be good hopefully.
i'll update if i can figure out why this happend and if i found a solution/managed to get the vm running stable.

What is the model name of the motherboard are you useing and what is the model of the graphics card you are using? If you are using a Nividia graphic card there are known issues trying to passthough them though a VM.

sorry, I assumed the specs from the profile would be shown:
i7-4790K, Radeon HD 7970 pcs+, Asus Maximus VII Impact mainboard, 16GB Ram.

VM "stopped" again, right when Win10 was updating. Now corrupt.
Lets try that again :slight_smile:
I'll try win8 again.

edit: with win8, same issue but I dont get that far. gets stuck at first reboot.

Dont speak so soon :slight_smile:

You know exactly what I meant. ( ͡° ͜ʖ ͡°)

Could you please post an example of /etc/default/grub with all the changes you mentioned. I'm not sure what you mean by saying "add to the end of that line". Thanks.

Good to see this thread is still active.

I have my Windows VM up and running. The only thing I need to work on is audio crackling as I need to use ich9 via PulseAudio. Followed the steps in the ArchWiki to do that.

So, audio generally works, all drivers installed. I noticed that YouTube videos desync over time when the sound card is set to 44.1KHz sample rate. Changing it to 48KHz fixes the desync but introduces significant crackling.
I have found my host bit depth to be the culprit as my interface's default is 24bit while the guest device only supports up to 16bit. Forcing 16bit via JACK has almost removed all the crackling but using it is rather inconvenient to me.

I am looking for a way to somehow force 16bit bitdepth via the guest's XML file and resample back to 24bit later on. Also I would like to know if there are any parameters for PulseAudio I can pass onto the Qemu command line in order to tweak buffer size and periods.

Thanks in advance!