ВАЖНО: в виртуалку стоит отдавать только вторую видеокарту, основную не стоит
ВАЖНО: мобильные полувидюхи (гибридные и максовые) не подходят, это вообще не видеокарты целиком а видеочипы без половины обвязки
#!/bin/bash
shopt -s nullglob
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}; n=${n%%/*}
printf 'IOMMU Group %s ' "$n"
/sbin/lspci -nns "${d##*/}"
done;
Внимание: для видеокарты устройства два, видео и аудио, запомнить нужно оба
для примера здесь и далее pci id будут 1002:6739 и 1002:aa88
options vfio-pci ids=1002:6739,1002:aa88
sudo dracut -f
sudo systemctl reboot
sudo lspci -vvvv
inxi -Gxxx
первая команда универсальная, вторая годится только для видеокарт, в обоих случаях ищем нужное устройство и смотрим чтобы драйвер значился как vfio-pci
ну и не помешает проверить что модуль vfio вообще загружен и работает
lsmod | grep vfio
тут есть несколько ключевых пунктов:
6.1) она должна быть efi а не легаси (пакет qemu-ovmf)
6.2) если в роли гостя винда то добавляем в xml конфиг виртуалки такие строки:
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
внурь features
Это нужно в основном для видюх nvidia серии geforce чтобы скрыть от их драйвера что они трудятся в виртуальной среде (это вроде как и не запрещено и не разрешено, и работать драйвер внутри виртуалки отказывается) но лучше купить nvidia quadro а ещё лучше amd
6.3) и убираем возможность усыплять виртуалку (всё равно pci устройство не даст этого сделать в лучшем случае или будет крах в худшем)
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
6.4) нет единого мнения добавлять устройства pci сразу или после установки системы
6.5) с некоторыми видеодрайверами можно отображать картинку на виртуальную видюху и с реальную с одного экрана, а в некоторых нет.