LINUX.ORG.RU

Kvm vga passthrough: вернуть хосту видеокарту

 , , ,


1

1

Пробрасываю карту:

echo 0000:01:00.0 > /sys/bus/pci/drivers/radeon/unbind
echo 0000:01:00.0 > /sys/bus/pci/drivers/vfio-pci/bind

стартую qemu:

qemu-system-x86_64 -hda image.qcow -enable-kvm -m 2048 -cpu host -device vfio-pci,host=01:00.0,x-vga=on -vga none

останавливаю qemu:

system_powerdown

пытаюсь вернуть:

echo 0000:01:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind
echo 0000:01:00.0 > /sys/bus/pci/drivers/radeon/bind

запускаю на возвращенной карте иксы:

startx -- -config xorg.conf.secondary

иксы запускаются, монитор переключается на правильный видеовыход, но там постоянно отображается последнее состояние перед выключением qemu, также перестает работать датчик температуры

radeon-pci-0100
Adapter: PCI adapter
temp1:         -1.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

что нужно сделать, чтобы можно было после остановки ВМ снова полноценно использовать проброшенную видеокарту на хосте?


Ответ на: комментарий от GGUseR

а он остается загружен, вторая карта тоже радеон.

кстати, если после unbind/bind не запускать qemu, а сразу вернуть карту в систему, то никаких проблем нет

Ower ()

попробуй потом ещё раз qemu -S, только cpu не запускай, а сразу выключай

это должно по идее заресетить карту, а потом снова unbind/bind

dimon555 ★★★★★ ()
Ответ на: комментарий от dimon555

запустил с -S, выключил, unbind/bind, теперь вместо последнего состояния экрана видеовыход просто не определяется, сенсор, температуры по прежнему не работает после возвращения карты

Ower ()
Ответ на: комментарий от GGUseR
lspci -k -s 01:00.0

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV630 XT [Radeon HD 2600 XT]
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 0990
        Kernel driver in use: radeon

у меня так - echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/bind

ну я так же делаю

Ower ()

и еще: где-то через 20 минут после старта вторых иксов(они то запустились, но увидеть я их не могу) на возвращенной карте, в лог начали сыпаться много таких строк:

AMD-Vi: Event logged [IO_PAGE_FAULT device=01:00.0 domain=0x0018 address=0x0000000035c1d410 flags=0x0020]

после alt+sysrq+e (из-за убийства иксов?) ошибки перестали сыпаться

Ower ()

К сожалению, после того как карта побывала внутри виртуалки Radeon уже не сможет её заного проинициализировать. Почему так, знает может быть только Alex Deucher.

И проблема была ещё и в том, что при выключении виртуалки карта не всегда правильно выключается. Но это фиксилось «пустым» перезапуском виртуалки с тем же конфигом и выключение до начала загрузки ОС (или тупо удали диск из параметров запуска для ресета).

Ну и ещё кое что. Если у тебя есть возможность, попробуй это дело с как можно более свежими иксами. Тут дело в том, что если у тебя видеокарта AMD не основная, то при удачном возврате карты драйверу ты сможешь её юзать даже без перезапуска иксов ибо сейчас modesetting иксовый драйвер умеет в PRIME.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.