Desvincular a Radeon para o VFIO-PCI

1

Eu tenho duas GPUs Radeon (AMD R9 290 e AMD HD7870) Eu quero desvincular o R9 290 do driver radeon e entregá-lo ao driver QEMUs VFIO-PCI. Estou usando esses comandos:

echo 0000:06:00.0 > /sys/bus/pci/drivers/radeon/unbind
echo 1002 67b1 > /sys/bus/pci/drivers/vfio-pci/new_id
echo 0000:06:00.1 > /sys/bus/pci/drivers/snd_hda_intel/unbind
echo 1002 aac8 > /sys/bus/pci/drivers/vfio-pci/new_id

mas meu sistema freez depois de 5 segundos. Eu não quero vincular a GPU a pci-stub porque quero usar duas telas antes de iniciar a VM. Como neste vídeo: link

Alguém pode me ajudar?

Atenciosamente

    
por BlackYDeath 27.06.2015 / 15:17

2 respostas

1

No momento, estou usando isso, mas é necessário reiniciar o lightdm. Execute-o a partir de um console tty diferente, não dentro da própria sessão lightdm.

(CTRL + ALT + F # para um console, F7 é normalmente o xsession)

#!/bin/bash

read -n3 -rsp "Restart lightdm to unbind the GPU? [yes] " res
test "$res" != 'yes' && exit 1
echo

sudo service lightdm stop
sudo echo "1002 683d" > /sys/bus/pci/drivers/vfio-pci/new_id
sudo echo "1002 aab0" > /sys/bus/pci/drivers/vfio-pci/new_id
sudo echo "0000:01:00.0" > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
sudo echo "0000:01:00.1" > /sys/bus/pci/devices/0000:01:00.1/driver/unbind
sudo echo "0000:01:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
sudo echo "0000:01:00.1" > /sys/bus/pci/drivers/vfio-pci/bind
sudo echo "1002 683d" > /sys/bus/pci/drivers/vfio-pci/remove_id
sudo echo "1002 aab0" > /sys/bus/pci/drivers/vfio-pci/remove_id
sudo service lightdm start

echo "Rebind Audio"
sudo modprobe pci_stub
sudo echo "8086 8ca0" > /sys/bus/pci/drivers/pci-stub/new_id
sudo echo "0000:00:1b.0" > /sys/bus/pci/drivers/snd_hda_intel/unbind
sudo echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind
sudo echo "8086 8ca0" > /sys/bus/pci/drivers/pci-stub/remove_id

# Check if VM drive is mounted
if ! grep -qs '/media/ljosalfur/VM' /proc/mounts; then
echo "Attempting to mount VM drive. I don't know how though."
#sudo mkdir /media/ljosalfur/VM
#sudo mount /dev/disk/by-id/0BD253F0-EF7F-6F40-BDD8-FABF85161762 /media/ljosalfur/VM
fi

sudo kvm -monitor stdio -vnc :0 \
-m 6G -mem-path /dev/hugepages \
-drive if=pflash,format=raw,file=./OVMF.fd -rtc base=localtime \
-cpu host -smp 6,sockets=1,cores=6,threads=1 \
-device vfio-pci,host=01:00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=01:00.1 \
-device pci-assign,host=00:1b.0 \
-drive file=/media/ljosalfur/VM/vm7.img,format=raw,cache=writethrough \
-smb /media/ljosalfur \
-usb -usbdevice host:046d:c24a -show-cursor \
-usb -usbdevice host:1b1c:1b08

echo
echo "Re-Rebind Audio"
sudo echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/unbind
sudo echo "0000:00:1b.0" > /sys/bus/pci/drivers/snd_hda_intel/bind

echo "Unbind GPU from vfio-pci"
sudo echo "0000:01:00.0" > /sys/bus/pci/drivers/vfio-pci/unbind
sudo echo "0000:01:00.1" > /sys/bus/pci/drivers/vfio-pci/unbind

read -n3 -rsp "Restart lightdm to rebind the GPU? [yes] " ress
test "$ress" != 'yes' && (exit 1)
echo
sudo echo "0000:01:00.0" > /sys/bus/pci/drivers/radeon/bind

Estou procurando uma solução alternativa, já que reiniciar o lightdm não é favorável. Acho que vou abrir uma nova pergunta com tags diferentes para isso.

    
por FortyTwo 12.11.2015 / 06:33
0

Eu não sugeriria que você fizesse isso, como mostrado no vídeo. Liguei minha placa gráfica ao driver pci-stub nos parâmetros de kernel do grub e pluguei um segundo mouse e um segundo cabo HDMI no computador e mudo a fonte no meu monitor.

Então aqui está o meu script de início.

qemu-system-x86_64 -enable-kvm -m 10240 -cpu host,kvm=off \
-smp 4,sockets=1,cores=4,threads=1 \
-bios /home/qemu/.qemu/bios/ovmf.bin \
-soundhw hda \'
-usb -usbdevice host:046d:c53b \
-rtc base=localtime \
-hda /home/qemu/.qemu/boot/Windows8_1pro.img \
-hdb /home/qemu/.qemu/hdd/HDD1.img \
-device vfio-pci,host=01:00.0 -device vfio-pci,host=01:00.1 \
-vga none \'
    
por Marton 27.06.2015 / 15:55