pci passthrough

pci passthrough


ВАЖНО: в виртуалку стоит отдавать только вторую видеокарту, основную не стоит

ВАЖНО: мобильные полувидюхи (гибридные и максовые) не подходят, это вообще не видеокарты целиком а видеочипы без половины обвязки

  1. для начала определим pci id и IOMMU group для видеокарты

#!/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

  1. создаём конфиг vfio модуля (говорим какие pci устройства не будут работать с родными дровами чтобы они не мешали прокинуть эти устройства в систему), файл /etc/modprobe.d/vfio.conf

options vfio-pci ids=1002:6739,1002:aa88

  1. генерируем новый initrd

sudo dracut -f

  1. ребутаемся

sudo systemctl reboot

  1. проверяем с каким драйвером наше pci устройство

sudo lspci -vvvv
inxi -Gxxx

первая команда универсальная, вторая годится только для видеокарт, в обоих случаях ищем нужное устройство и смотрим чтобы драйвер значился как vfio-pci

ну и не помешает проверить что модуль vfio вообще загружен и работает

lsmod | grep vfio

  1. создаём виртуальную машину

тут есть несколько ключевых пунктов:

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) с некоторыми видеодрайверами можно отображать картинку на виртуальную видюху и с реальную с одного экрана, а в некоторых нет.

Содержание