GPU Passthrough using the expansion bay

Hey everyone,

I am an avid Linux user and the Framework 16 is shaping up to be the ultimate all-in-one machine.

The only thing I am unsure about (as I have little experience doing this) is the possibility of GPU Passthrough using a GPU in the expansion slot for the ultimate VM experience.

Thanks for any help.

2 Likes

I don’t think we will have an answer to that question until the laptop is available and it can be tested.
We still do not know if the laptop will have a MUX switch for the screen, even after the deep dive on the subject.

I am also hoping that all this will be supported and won’t buy until I know for sure that it was correctly implemented.

2 Likes

Ah, I see.
Thanks for the help

@Darius_C what do you do in a VM utilizing a GPU, and what VM software do you use? I’ve yet to find a good workflow for either productive GPU usage or gaming.

Could be used for Windows games with restrictive anti-cheats (aka blocking Proton)

@RandomRanger Don’t know about their use case, but personally I find it useful for a Mac VM I use for digital art and development. It’s nice to have hardware acceleration on a canvas or with some graphical design apps which are mac only. On the development side, this is used mostly for applications targeting MacOS or IOS. Though, for both usecases, it can be quite hard to get up and running and sometimes an older version or second GPU is needed.

When you set up a vm right it’s not really that slow either. Specifically, when giving it a full partition or drive instead of a qcow file. On top of that, I have had a reasonably good experience with a windows VM and gaming when set up correctly. Not as good as native, but reasonably good. One more point, I know some people who use it for a contained environment allowing others to use it for Crypto or ML over a network. Not my jam but it can be done and is a reasonably good experience. This’ll be more usefull when recycling the board and card through after an upgrade.

It’s good for testing environments built with an image when building application, developing games, or pen testing systems which may use a graphics card. This way you don’t need to worry about your dev environment hiding or creating issues. In production, in a data center, your applications will be run on a VM anyway it’s good to test locally on the correct environment.

Edit: To answer your question on software, Qemu with KVM for a quicker VM

@RandomRanger I was planning on using it for mainly gaming as everything gaming just works so much better in Windows but I don’t like using too much proprietary software (especially Microsoft) and dual booting is too inconvenient as I would like to dynamically allocate HD space.

I also work in software so having a Windows testing environment can be useful, but obviously that wouldn’t require a GPU.

I use qemu and KVM for as close to native performance as possible.

I also have an interest in running VM’s with dGPU passthrough, either for running games in a Windows VM, or just for fun experiments with all kinds of different operating systems.

What I’ve tried so far is install proxmox, and lmde6 on top of that so i have a decent desktop, and i’ve moved a Endeavor OS VM from my main server over to see if i can run it in a VM.
Since i have no idea how the iGPU and dGPU work together, or how to configure the mux, i just simply tried to passthrough the dGPU as a whole and see if the VM can boot without compromising the host. So far that seems successfull, and sddm and X are running. However, i don’t have any output on any of the ports, so don’t know if things actually work ok. Running dmesg does not seem to show any errors though.

Next i want to try if i can run LookingGlass, then at least i should get some output.

If you are with docker/containers…

There is this project:

You can run a full windows OS inside a container.

There is a trick to get the GPU passed though:

I have not done it yet. I need to do some more learning to see exactly what the guy did in that comment.

Update:
Have copied my windows 11 installation into a VM drive image, and installed virtio drivers, so now my windows 11 can be run from proxmox.
Next installed Looking Glass host software on Windows, and the client on proxmox, the two work fine together, except looking glass was not starting at boot, and when started from RDP the mouse would not move.
In the end that seemed to be because there was no display connected to the dGPU. Once i connected a screen to the dGPU output on the back, both the screen, and Looking Glass were working correctly!

So now i got

  • linux output on iGPU (== laptop screen)
  • windows output on dGPU (== external screen)
    I plugged in a logitech bolt dongle and passed it through to the windows VM, so now it is running as an independent terminal using an external keyboard/mouse/screen.

Next step, install a game and see how that works out :slight_smile:

2 Likes

Running games is working fine, but does make the fan’s spin up and thus the laptop becomes a bit loud (and obviously, it also drains the battery fast…).

After shutting down the VM, and subsequently shutting down the host, it crashed on me, presumably because i did not properly detach the gpu from the host driver on startup.

So i put the following in the /etc/modprobe.d/pve.conf file:

softdep amdgpu pre: vfio-pci
options vfio-pci ids=<gpu id>,<audio id>

(typically the gpu id can be queried with ‘lspci -s -n 03:00.0’, and the audio id with ‘lspci -s -n 03:00.1’, at least on my framework 16, check any generic gpu passthrough guide for a more detailed description on how to do this)

run ‘update-initramfs -u’, and reboot.

After that, the amdgpu driver on the host doesn’t see the dGPU anymore, and it can be safely passed on to the VM. Shutting down afterwords works fine now for both the VM and the host.

Note: For Looking Glass to work, you do need to attach a screen or dummy plug to the dGPU output on the back of the dGPU module.

Thanks for the updates!
I was having problems with passing thought the gpu on my qmeu setup.
It had the vfio drivers loaded and seemed to be ready to be passed through but the windows VM didn’t seem to see it at all.
Maybe someone else has more success with this.

Would you say using proxmox has any detrimental effects on overall experience.
Also are you using the updated BIOS?

Thanks

The overall experience using proxmox + Win11 VM + Looking Glass is really good, it feels like native performance (but it’s hard to put that in hard figures). The only anoyance is that there must be an output connected to the dGPU output port.

Perhaps some smart switching using the mux can make the VM appear on the laptop screen (but then you would lose access to the X session). That is next on my list to investigate.
I found some interesting info here:
VGA Switcheroo — The Linux Kernel documentation
However in my current setup /sys/kernel/debug/vgaswitcheroo/switch does not seem to exist, so i probably need to take a closer look at parameters i pass onto the kernel.

My bios is updated to 3.03 which i think is the latest.

Nice that you got it running!

Just curious - did you also do the the kernel module and dkms steps for looking glass?

No have not tried the kvmfr module on the host yet, perhaps I’ll give that a try, but currently don’t feel the need as the system performs well enough for my needs as it is.

1 Like

Thanks, looking to try to set this up possibly today.

If I could get a windows 11 VM just for gamepass that would be awesome. I would rather mess with an external monitor when I want to play a specific game over rebooting just to get into windows.