VFIO-драйвер — это IOMMU/устройство-независимый фреймворк, предоставляющий защищённый доступ к пространству пользователя. Виртуальные машины часто используют прямой доступ к устройству при настройке для достижения максимальной производительности ввода-вывода.
Для успешного использования устройства VFIO обязательно, чтобы оборудование поддерживало виртуализацию и группы IOMMU. Выполните следующую команду в ОС хоста, чтобы проверить, включён ли IOMMU:
# dmesg | grep iommu
Если IOMMU включён, терминал отобразит следующее:
iommu: Default domain type: Translated
hibmc-drm 0000:0a:00.0: Adding to iommu group 0
ehci-pci 0000:7a:01.0: Adding to iommu group 1
ehci-pci 0000:ba:01.0: Adding to iommu group 2
ohci-pci 0000:7a:00.0: Adding to iommu group 3
ohci-pci 0000:ba:00.0: Adding to iommu group 4
xhci_hcd 0000:7a:02.0: Adding to iommu group 5
...
Предположим, пользователь хочет получить доступ к PCI-устройству 0000:1a:00.3. Устройство подключено к шине PCI, поэтому пользователь будет использовать vfio-pci для управления группой:
# modprobe vfio-pci
Привязка этого устройства к драйверу vfio-pci создаст символьные устройства группы VFIO для этой группы.
# echo 0000:1a:00.3 > /sys/bus/pci/devices/0000:1a:00.3/driver/unbind
# echo `lspci -ns 0000:1a:00.3 | awk -F':| ' '{print $5" "$6}'` > /sys/bus/pci/drivers/vfio-pci/new_id
Четыре свойства поддерживаются для устройства VFIO:
-device vfio-pci,host=0000:1a:00.3,id=net,bus=pcie.0,addr=0x03.0x0[,multifunction=on]
Примечание: ядро должно содержать драйверы физических устройств, иначе оно не сможет загрузиться нормально. Примечание: избегайте использования устройств balloon и устройств vfio вместе.
Стандартные виртуальные машины StratoVirt поддерживают горячее подключение VFIO-устройств с помощью QMP. Обратитесь к qmp.md для получения конкретных параметров командной строки.
Горячее подключение устройства VFIO:
-> {"execute":"device_add", "arguments":{"id":"vfio-0", "driver":"vfio-pci", "bus": "pcie.1", "addr":"0x0", "host": "0000:1a:00.3"}}
<- {"return": {}}
Горячее отключение устройства VFIO:
-> {"execute": "device_del", "arguments": {"id": "vfio-0"}}
<- {"event":"DEVICE_DELETED","data":{"device":"vfio-0","path":"vfio-0"},"timestamp":{"seconds":1614310541,"microseconds":554250}}
<- {"return": {}}
Если необходимо напрямую отвязать устройство VFIO, вы можете выполнить следующую команду. Примечание: предположим, используется драйвер hinic.
# echo 0000:03:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind
# echo 0000:03:00.0 > /sys/bus/pci/drivers/hinic/bind
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )