Play games in Windows on Linux! PCI passthrough quick guide

You can write a script for it, check out the archwiki successful passthrough builds. Go into their github and check out their scripts and stuff to get an idea for how you will need to customize it.

Essentially, you just run a script that unlatches your gpu from linux at the booting of your VM

1 Like

Thanks for the quick reply :slight_smile:
To be clear: disconnecting or reconnecting a GPU to a running VM is nothing to fear? :smiley:

Thanks again!

Hello
Its been a little late trying to follow (well almost follow) this guide and I came across multiple issues. So here it goes
Followed mostly a guide with the below steps

guide.txt (1.3 KB)

First thing to notice is that he passes iommu=1 in the /etc/default/grub while you dont.

Upon verification i get
IOMMY Ver.txt (408 Bytes)
Does this mean I cant pass through a gpu? (Weird thing is the cpu is intel xeon e5-2667 only the gpu is amd) Or is it just an informational msg?

Also grep -e DMAR -e IOMMU gives me
grep -e DMAR -e IOMMU.txt (1.7 KB)

Upon verification if the amddgpu uses vfio instead of amdgpu driver (here the other guide mentions that only the Kernel driver is important to show up as vfio and not the Kernel module which in me shows amdgpu) with command
lspci -vnn | grep -iP “vga|amdgpu|nvidia|nouveau|vfio-pci” (he uses other command instead of your lspci -k) but the results are the same gives
Kernel_driver module.txt (662 Bytes)

Finally in each reboot I get some error - warnings (also tried one more time the update-initramfs -u)
warnings.txt (22.3 KB)

Why so many missing driv/firm upon running update-initramfs -u
???
…and whats that PTE read access is not set?
Exactly below that (had to recorded to see it ) has some errors also like
Resuming from hibernation
/dev/sdc2: clean617137/6717440 files, 4938101/26055424 blocks
FAILED Failed to start Load Kernel Modules
.
.
.
[ok]Started Flush Journal to Persistent Storage
[failed]FAILED Failed to start Load Kernel Modules
.
.
[Failed] Failed to start - raise network interface (probably this is due to not having the second ethernet connected?- because I have connection from the other lan port)

Of course I didnt continue to the apparmor part because I dont think things are correctly set up
Any thoughts / observetions / solutions?

Thank you in advance

ps1 Forgot to mention that my gpu is in an isolated IOMMU Group and for my cpu the command lscpu | grep Virt returns
VT-x only. In another example i noticed it had in addition the
Viryalization Type = full

ps2 System is a Dell Precision T7600 based on c600/c602 intel chipset and a dual e5-2667 xeon cpu with 64gb ram / 2 gpus - quadro 2000 with legendary nvidia drivers for host running Debian 10 and rx 570 amd for the future Win 10 VM . In bios I enabled everything about Virtualization. Some other options were
Security->TPM Security (Trusted Module Platform)->Disabled
CPU XD Support (The operating system can use this feature to hinder software that exploits buffer overflows)->Enabled
Virtualization =>enabled
VT for Direct I/O->enabled
PCI MMIO Space Size->Large
PCI Bus Configuration->64 Pci Buses (Also has 128 and 256 to choose from)

ps3 @wendell is there a change to give a hint (Thank you)

After command
apt-get install firmware-linux
I think the initial (at least) messages at boot
[3.202732] [drm:amdgpu_pci_probe [amdgpu]] <> amdgpu requires firmware installed
[3.202020] See https://wiki.debian.org/firmware for information about missing firmware
… went away

Still have the
[0.70263] DMAR: DRHD: handling fault status reg 2
[0.70269] DMAR [DMA Read] Request device [00:1f.2] fault addr 2c703000 [fault reason 06] PTE Read access is not set
though

Hi everyone.
I do realize that this topic has not been alive for over two months,but I find this to be such a helpful guide and conversation that I created an account to take part in it,and other similar topics I suppose.

So over a year ago this site came up when looking what to do next with Linux. I normally runs Linux on everything from server,to laptop,to the wife`s laptop,to the set top box for digital tv (back when that was a thing even).

The problem was… Things needs windows,and booting into windows for few hours tops a month was not wanted… This was the solution. My server kept on “serving” ,but on the TV windows 10 booting up with its own gpu… When windows 10 needed to reboot,it did,but rest of system is untouched… Windows 10 for some reason seem to want to reboot more than be at use…

Well this was now over a year ago,and I manage everything without issues,and never got to register back then.
Thanks so much for OP ,for this guide both video and on this forum.

This time around I found this tread once more,and this time because I wanted to do it on my laptop… Yes… I know thats not the same,but it seems to me that what I could just dream of being possible back when this guide was made is not so far fetched. In worse case Id need a gpu via thunderbolt I guess. But I`m here now,and I will try to keep updating here of my findings.

The laptop has a GTX 1060 and intel. I was only hoping for a way to dedicate nvidia to a virtual windows (or maybe even the laptops windows partition) and have it go out through hdmi output. Also passthrough mouse/keyboard and such. At the moment I`m looking at this IOMMU groups.

In my laptop I got 3 things in same group as my nvidia gpu. But it seems to make sense… Two of course is Audio and Video (nvidia) ,the last one is “00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 07)”

For the moment that`s where I am at.

I am sorry if this topic contains more about all of this (my ramblings) far into it,I did read over a year in before writing here,but will of continue to read this and other entries on this forum.

Thanks again OP for all the help this guide has given me.

Take a look at this for laptop gpu passthrough- https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28

Hey all. Thought I’d revive this thread with a valid question; is this guide still relevant with the steps shown, or have things changed since this guide was created? Has it been updated?

I’m planning to do this with with my new build (2700X, X570, 16GB, GTX 650Ti boost & RX 570 GPU’s) and have been looking for a good, detailed how-to guide.

Thanks.

Not sure about the instructions here but I’ve followed those over at VFIO in 2019 – Fedora Workstation (General Guide though) [Branch, Draft] and it mostly works. Check the comments for some specifics.

Ok, thanks. I’ll check that out.
Also, are the steps basically the same for Arch-based distros? I prefer to use Manjaro.

Thanks.

Success!!! :smiley:

2 Likes

Alright, everything’s working well. Just one thing I’m having trouble figuring out…
I want to use the front panel audio for sound with the Windows VM. I tried adding a hardware device, sound > AC97, and it appears there is an output device showing in the VM, but I get no sound from it. Still searching, but haven’t found a solution yet.

Any thoughts?

Thanks.

I have the same keyboard. Corsair ftw!

1 Like

Sound should “just work” if you choose the right output. I really found it hit or miss, so got myself a cheap used usb sound card, and pass the USB port through, which takes the card with it.
The sound had been working on ich6(or something) then stopped, then worked on ac97. Then stopped.

There is a thread about using SCREAM or some such, but I already had the device :man_shrugging:

1 Like

Ok, thanks. I’ll keep experimenting with it.

1 Like

Ok so im having a weird problem, i got lspci reporting that the card is using the vfio driver but when i create the vm im dumped into a SHELL> rather than it starting the windows installer… so i type exit and then it brings me to a boot options screen where i select the windows installer dvd and the screen goes black for a second then returns me back to the boot options…

Hello! I am currently stuck in Debian 10 while patching acs, as i drag the patch over and press enter, it gives this error: patch: **** strip count l is not a number

If anyone knows what can be done to fix this, plz respond.
thx

Try using a version of the patch for the newer kernel found in debian 10. You can find your kernel version with uname -r.

This one is for 4.19-
https://gitlab.com/Queuecumber/linux-acs-override/raw/master/workspaces/4.19.5/acso.patch

Hello, did you solve it? i have the same 1080 and passthrough is done. but can’t start FIFA 19 or FIFA 20 Demo.

Thank you for putting this guide and video together!

Is this guide still (mostly) valid in January 2021? Is there a more recent guide around?

I have 1 GPU and no integrated GPU. I am thinking of passing the GPU and various USB ports to the guest OS and then simply control the host via SSH. Is that generally viable?

It’s possible, viable depends on your use-case, but generally not recommended. You get none of the benefits and all of the negatives vs just dual booting at that point with just one card. A cheap host card is definitely recommended even something like a 50$ gtx 710 would do.