Предоставление доступа к PCI-устройствам в ПК СВ "Брест"
В данной статье показано предоставление доступа к PCI-устройству на примере аудиоконтроллера.
Драйвер VFIO
(виртуальный ввод-вывод функций) представляет собой новую среду драйверов пользовательского уровня для ОС семейства Linux. Этот драйвер заменяет обычное назначение устройств KVM PCI passthrough
. VFIO
предоставляет прямой доступ устройства к пользовательскому пространству в защищенной среде безопасной памяти (IOMMU
). IOMMU
сопоставляет видимый устройству виртуальный адрес (виртуальный адрес ввода-вывода или IOVA
) с адресом физической памяти.
Пример предоставления доступа к PCI-устройству
Для проброса устройства целиком необходимо:
- Посмотреть адрес устройства:
sudo lspci -nn | egrep -w 'Audio'
Пример вывода:
где:
vendor = '8086'
— код производителя устройства;device = '9dc8'
— код устройства;class = '0403'
— класс устройства.
- На сервере виртуализации (на котором планируется предоставление доступа к этому контроллеру процессам ВМ) занести данные об устройстве в
vfio-pci id
одним из двух способов:добавить данные устройства в
/etc/default/grub
:Пример ввода данных об устройстве:quiet splash intel_iommu=on vfio-pci.ids=8086:9dc8
CODEдобавить данные устройства в конфигурационный файл
VFIO /etc/modprobe.d/vfio.conf
:options vfio-pci ids=8086:9dc8
Активировать автозагрузку модулей
VFIO
в/etc/modules
:vfio vfio_iommu_type1 vfio_pci vfio_virqfd
Обновить все модули
initramfs
:где:sudo update-initramfs -u -k all
- "
-u
" — обновить существующийinitramfs
; - "
-k all
" — обновить все версии ядра.
- "
Обновить Grub:
sudo update-grub
- Перезагрузить сервер виртуализации. Во время перезагрузки перейти в BIOS и включить
VT-d (IOMMU)
иSR-IOV:
После перезагрузки проверить статус
IOMMU
:Вывод команды должен быть:sudo dmesg | grep -e DMAR -e IOMMU
CODEПроверить чем перехвачено устройство:
Вывод команды должен быть:sudo lspci -nnk
CODE- В веб-интерфейсе ПК СВ в левом меню выбрать Шаблоны — ВМ.
- Из списка шаблонов ВМ выбрать тот, которому необходимо предоставить доступ к PCI-устройству и нажать на кнопку Изменить шаблон.
- На странице Изменить шаблон ВМ перейти во вкладку Ввод/Вывод.
- В области PCI-устройства нажать кнопку + и выбрать необходимое устройство из выпадающего списка Имя устройства:
- На странице Изменить шаблон ВМ нажать кнопку Обновить.