My primary workstation I use for a combination of gaming using Steam on Linux and video editing work. One of the programs I need to run is TopazAI video processing for upscaling old video clips. This being a Windows program, I currently run a Windows VM for this type of work. It can work with just the CPU but it can take 20 hours or more to process a 15 minute clip. I’ve been looking into passing through my GPU (Radeon 7900XT) to the VM (QEMU / Virt-Manager) so I can take advantage of it. I have a second GPU (Radeon HD 6670) in the system. Both GPUs are hooked up to the same monitor and I switch inputs to go between the two GPUs (In Linux, I don’t use the second screen / GPU at all).
Now, following a multitude of different instructions, and with the assistance of the helpful GPU Passthrough Manager application, I have successfully gotten Passthrough to work on my Windows VMs. I’ve encountered an issue however I cannot figure out if it is a limitation of the technology or if I’m just not using the right keywords when trying to troubleshoot this.
I use the Radeon 7900XT for gaming in Steam on Linux. I had thought when I started down this path that when I needed to process some video, I could fire up my Win VM which would take control of the 7900XT while my HD 6670 took over for the Linux Desktop. This way I could start processing video in Win but then switch back to my KDE Desktop and work on other things. Then, when the video processing is done, I can shut down the Win VM and go back to the 7900XT being the primary GPU on the desktop. That’s what I thought it would do at any rate.
However, what I am starting to realize is that all of these GPU Passthrough instructions seem to dedicate your GPU to the VM and there is no way to switch back to it being the primary GPU on Linux without changing settings and rebooting (to unload the VFIO drivers and load the AMDGPU drivers). What’s the point of all of this effort if I have to reboot my machine, I might as well just dual boot into windows and work on my laptop instead. I then thought, perhaps I need to do a hybrid of the single GPU Passthrough instructions to hook and unhook the primary GPU but still use the secondary GPU for Linux but as I started reading them they don’t make sense either.
So, is there a way to use GPUPassthrough with two GPUs and load / unload the primary GPU from the Windows VM on the fly while keeping the secondary GPU just for Linux use?