You are not logged in.

#1 2016-08-12 16:13:37

JakeStanger
Member
Registered: 2016-08-12
Posts: 19

Binding GPU to VFIO freezes display output

Hi there,
I'm trying to set up GPU passthrough, following this guide: https://www.reddit.com/r/pcmasterrace/c … de_on_how/

However I am having some issues on the steps related to binding the GPU to the VFIO driver.

When I run

sudo vfio-bind 0000:01:00.0 0000:01:00.1

(script below), the display completely freezes. The OS luckliy does not freeze, so I was able to write the output of

lspci -nnk

to a file. This confirmed (upon reboot) that the driver had been successfully bound. Perhaps some kind of display service restart is required?

Here is the vfio-bind script:

#!/bin/bash

modprobe vfio-pci

for dev in "$@"; do
        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
        device=$(cat /sys/bus/pci/devices/$dev/device)
        if [ -e /sys/bus/pci/devices/$dev/driver ]; then
                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
        fi
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done

---

I also have a second, related issue if you wouldn't mind helping me with that too. Running the qemu-test script (below) un-freezes the display very briefly, before displaying no output (as it is designed to, I believe). I'm a little unsure, but I think this is because the display is switching to the IGPU at this point. The problem is, enabling my IGPU in my BIOS/UEFI settings alongside my external GPU stops Arch from outputting at all after the "starting version xxx" display right after the bootloader (signal is still being received, but it's just a black screen on both GPU outputs).

#!/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=01:00.0,multifunction=on \
  -device vfio-pci,host=01: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

---

So just so it's clear - ideally I want Arch to be using my internal graphics, with my external GPU being used for a Windows virtual machine (although I haven't quite got that far yet). Here's the important hardware:

-CPU: Intel i7 4790k
-GPU: Nvidia GTX 980
-Mobo: MSI Gaming V z97

Any help is appreciated, and I'll provide anything else if that's going to help.
Thanks.

EDIT: Ok so I changed from external GPU with IGD support to just IGD in my BIOS and now vfio-bind works perfectly fine, and the external card is still being picked up. When I run the qemu script I get a "connection refused" error though.

Last edited by JakeStanger (2016-08-12 16:46:10)

Offline

#2 2016-08-12 17:30:00

JakeStanger
Member
Registered: 2016-08-12
Posts: 19

Re: Binding GPU to VFIO freezes display output

OK so a simple fix. I suppose that's why they call it Noob Corner...

By adding '--nographic' to the end of the qemu script it worked (I have been presented with a UEFI terminal, which is correct as I haven't loaded an OS yet). I'm not sure if this is the desired effect, so if somebody could explain this I'd be very grateful.

Offline

Board footer

Powered by FluxBB