LINUX.ORG.RU

Сообщения hatsujouki

 

VM с прокинутой GPU запускается только один раз, после чего требуется рестарт хоста

Форум — Linux-hardware

Добрый вечер. Проблема: виртуалка с прокинутой видеокартой грузится только один раз, после чего требуется ребут хостовой системы, чтобы можно было снова загрузить виртуалку.

Использую virt-manager. вот xml описание VM:

( читать дальше... )

Как вы можете заметить, у меня гостевая ОС - win XP, в EFI она не умеет. GPU - nvidia GTX 630.

Вот параметры загрузки ядра

append="root=/dev/nvme0n1p2 vga=normal ro amd_iommu=on iommu=pt kvm_amd.npt=1 kvm_amd.avic=1 kvm.ignore_msrs=1 video=vesafb:off,efifb:off vfio-pci.disable_idle_d3=1 pcie_acs_override=downstream,multifunction"

вот что в /etc/modules, initrd был пересобран, насколько понимаю, с ними

vfio
vfio_iommu_type1
vfio_pci ids=10de:0f00,10de:0bea

вот /etc/modprobe.d/vfio.conf

options vfio-pci ids=10de:0f00,10de:0bea
softdep nvidia pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci

в виртуалку прокинуто два устройства (видеокарта и звук на ней)

0000:06:00.0 и 0000:06:00.1

при первой загрузке в dmesg по vfio есть такие строки:

[Fri Nov 29 02:09:11 2024] vfio-pci 0000:06:00.0: enabling device (0000 -> 0003)
[Fri Nov 29 02:09:12 2024] vfio-pci 0000:06:00.1: enabling device (0000 -> 0002)
[Fri Nov 29 02:09:13 2024] vfio-pci 0000:06:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=none

при второй загрузке в dmesg по vfio только это:

[Fri Nov 29 02:12:26 2024] vfio-pci 0000:06:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff

Очевидно, что что-то идет не так при выключении вм. Гпу не возвращается в то же состояние, в котором она была до загрузки вм. Я пробовал уже вот так

echo 1 > /sys/bus/pci/devices/0000\:06\:00.0/remove
echo 1 > /sys/bus/pci/devices/0000\:06\:00.1/remove
echo 1 > /sys/bus/pci/rescan

и вот так

echo '0000:06:00.1' > /sys/bus/pci/drivers/vfio-pci/unbind
echo '0000:06:00.0' > /sys/bus/pci/drivers/vfio-pci/unbind
echo '0000:06:00.1' > /sys/bus/pci/drivers/vfio-pci/bind
echo '0000:06:00.0' > /sys/bus/pci/drivers/vfio-pci/bind

и вот так

setpci -s 06:00.0 COMMAND=2:2
setpci -s 06:00.0 COMMAND=0:2

а так же я пробовал стянуть биос с карты и подсунуть его файлом, что видно из xml конфига И всё это не помогло.

Из любопытного - если при первом старте VM снять чекбоксы «ROM BAR» с прокинутой карты - VM не грузится, но в dmesg есть сообщения enabling device и changed VGA decodes. Если повторно включить ROM BAR - она ведет себя как обычно и запускается только один раз. Видимо необратимые изменения происходят только если стоит чекбокс ROM BAR. Но я пытался гуглить и мне не особо помогло то что я находил.

версии ПО:

Linux abyss.example.org 5.15.19 #1 SMP PREEMPT Wed Nov 20 22:34:10 MSK 2024 x86_64 AMD Ryzen 5 3600 6-Core Processor AuthenticAMD GNU/Linux
ядро патченное ACS override patch-ем
libvirt-9.1.0-x86_64-1_SBo
libvirt-glib-4.0.0-x86_64-1_SBo
libvirt-python-9.1.0-x86_64-1_SBo
virt-manager-4.1.0-x86_64-1_SBo
qemu-7.2.1-x86_64-2_SBo

Помогите!

 , , ,

hatsujouki
()

RSS подписка на новые темы