VM с прокинутой GPU запускается только один раз, после чего требуется рестарт хоста
Добрый вечер. Проблема: виртуалка с прокинутой видеокартой грузится только один раз, после чего требуется ребут хостовой системы, чтобы можно было снова загрузить виртуалку.
Использую 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
Помогите!