0

I followed this guide to setup a vm with pci passthrough.

My setup:

  • MSI Z170 Gaming M7

  • i7-6700K

  • GTX1080[Host]

  • RX580[Guest]

  • Host OS Manjaro KDE on 5.4

  • Guest OS Win10

I can confirm that the GPU is isolated correctly and uses vfio. When I start the machine through virt-manager it seems to start(allocating RAM and CPU usage), but when I switch the monitor to HDMI source I get a no signal message.

Similar using this script

#!/bin/bash cp /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd /tmp/my_vars.fd qemu-system-x86_64 \ -enable-kvm \ -m 2048 \ -cpu host,kvm=off \ -vga none \ -device vfio-pci,host=02:00.0,multifunction=on \ -device vfio-pci,host=02:00.1 \ -drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd \ -drive if=pflash,format=raw,file=/tmp/my_vars.fd

opens the qemu console on my host machine. Help is really appreciated!

1 Answer 1

0

I've run into the same problem recently, but on a completely different setup:

  • AMD Ryzen 7 2700X on a X470 chipset
  • Host: Kubuntu 19.04 w/ Radeon HD 7770
  • Guest: Windows 10 w/ GeForce GTX 970

The VM starts up and the fans on GTX 970 start spinning, however there's no video output and Windows doesn't detect GTX 970.

Most of the googling leads to various Reddit threads that suggest that when GPU is installed in the primary PCI-E slot, even though VFIO initializes the card before video drivers do, linux kernel somehow taints its BIOS and the hypervisor won't be able to boot it up later.

Solutions I've found:

  • Temporarily installing the guest GPU into the 2nd PCI-E slot, dumping a clean version of vBIOS, then passing it to libvirt as described here
  • Alternatively, for Nvidia GTX 10-series cards, somebody came up with a script that takes a full ROM (that you can download on TechPowerUp or dump using nvflash on Windows) and converts it to a vBIOS that can be passed to libvirt. It's described here. This won't work for you because you have a radeon GPU, but since this question pops up while googling the problem, somebody else might find it useful.
  • In my case, I've just swapped the two cards around. Now my primary PCI-E slot is occupied with the less powerful Radeon HD 7770, whereas GTX 970 resides in the 2nd slot. According to my motherboard manual, if both slots are used, my primary PCI-E slot switches from x16 to x8 anyways, so there's no real benefit for me to keep the passed-through card in it. The problem was solved and GTX 970 is working correctly now.

Note: I've previously used these same host and guest systems on a B350 motherboard with a Ryzen 3 2200G. That CPU has its own integrated graphics that I used for host. Even though GTX 970 was installed in the primary slot there, the problem didn't occur. Since your CPU also has built-in graphics, you can try to enable iGPU, set it as primary in UEFI, then connect a monitor to motherboard itself. This might cause your iGPU to take the bullet instead of the guest GPU.

Keep in mind, in all those Reddit threads the guest GPU is from Nvidia. This is also the case with my setup. Your problem might have competely different roots.

3
  • I have my guest card in the third slot (not first) otherwise both cards end up in the same iommu group. As both cards are pretty powerful I will try swapping cards as there seems to be less of an issue with amd cards in linux overall.
    – schgab
    Jan 21, 2020 at 22:12
  • Then your problem likely has a different cause. But just in case, make sure that your guest card is not set as your initial output in UEFI, meaning it's not the one used by UEFI itself and Grub. Might also try disconnecting the video cables from it until Manjaro is fully started and VFIO isolation is in place. Jan 22, 2020 at 16:54
  • My win 10 vm is now running fine. I ended up switching host and guest gpu. Now using the amd gpu on linux and I have to say it runs smoother.
    – schgab
    Jan 22, 2020 at 17:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .