Всех с наступающим! Здоровья и счастья! =)
Нужно получить некоторую инфу с различных конфигураций, больше всего интересует ASRock Z390 Phantom Gaming-ITX и ASRock X299E-ITX, но и кое-какие другие материнки тоже подходят, критерии в пояснении, а сейчас тест:
на ubuntu можно так:
- в BIOS включить VT-x и VT-d (для ASUS это обычно Advanced -> cpu configuration и systen agent (sa) configuration)
- открыть для правки конфиг grub:
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt"
sudo update-grub
reboot
echo ;cat /proc/cpuinfo | grep "model name" | uniq ; cat /sys/devices/virtual/dmi/id/board_{vendor,name,version} ; echo ; dmesg | grep ecap ; echo ; for dp in $(find /sys/kernel/iommu_groups/*/devices/*); do ploc=$(basename $dp | sed 's/0000://'); igrp=$(echo $dp | awk -F/ '{print $5}'); dinfo=$(lspci -nn | grep -E "^$ploc"); echo "[IOMMU $igrp] $dinfo" ; done
На этом всё, спасибо!
А теперь необязательная часть, можно не читать.
Мне нужно купить материнку, в связи с парой закидонов подходит не любая, фичи десктоп-маркетологами не облизаны и потому на коробках и в обзорах не красуются. Выяснить работает ли оно так как нужно возможно уже только запустив на собранной системе линукс. Как и говорил, больше всего меня интересует получить результаты с ASRock Z390 Phantom Gaming-ITX, но в целом мне подходят другие материнки 2017-2018 годов на топовых чипсетах под LGA1151 v1 (под мой проц). Обязательно наличие хотя бы 1 слота под NVME-накопитель, но лучше 2.
Искомые закидоны таковы:
1) для PCI passtrought необходима работоспособность ремапинга прерываний.
2) так же мне требуется пробрасывать в таком же режиме звуковую USB-карту, обычные способы проброса USB имеющиеся в гипервизорах подходят много для чего, кроме профессиональных звуковух. Для их полноценной работы требуется чтобы в госте работал родной драйвер разработчика карты, обычно писанный только под винду и макггбр. Потому пробрасывать надо весь USB-контроллер, в который и втыкать карту. И не любой контроллер, а тот что на материнской плате физически разработчиком был подключен через собственную PCI линию, изолированно от корневой. Обычно это в лучшем случае 1-2 USB-разъёма на задней панели. Их и ищем.
Вот пример вывода на текущей системе где всё это работает как надо, хоть и на грани =)
ASUS ROG Strix Z270I Gaming
Core i7-7700K
[ 0.004000] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[ 0.004000] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
В этих строках шестнадцатеричное значение после «ecap» указывает, поддерживается ли ремапинг прерываний. Это так если последним символом этого значения является 8, 9, a, b, c, d, e или f.
А это вывод lspci -nn c внедрением в строки назначенной устройству группы IOMMU.
[IOMMU 0] 00:00.0 Host bridge [0600]: Intel Corporation Intel Kaby Lake Host Bridge [8086:591f] (rev 05)
[IOMMU 10] 00:1c.4 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #5 [8086:a294] (rev f0)
[IOMMU 11] 00:1d.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #9 [8086:a298] (rev f0)
[IOMMU 12] 00:1f.0 ISA bridge [0601]: Intel Corporation 200 Series PCH LPC Controller (Z270) [8086:a2c5]
[IOMMU 12] 00:1f.2 Memory controller [0580]: Intel Corporation 200 Series PCH PMC [8086:a2a1]
[IOMMU 12] 00:1f.4 SMBus [0c05]: Intel Corporation 200 Series PCH SMBus Controller [8086:a2a3]
[IOMMU 13] 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-V [8086:15b8]
[IOMMU 14] 04:00.0 Non-Volatile memory controller [0108]: OCZ Technology Group, Inc. RD400/400A SSD [1b85:6018] (rev 01)
[IOMMU 15] 06:00.0 USB controller [0c03]: ASMedia Technology Inc. Device [1b21:2142]
[IOMMU 16] 07:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 [144d:a804]
[IOMMU 1] 00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x16) [8086:1901] (rev 05)
[IOMMU 1] 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF119 [GeForce GT 610] [10de:104a] (rev a1)
[IOMMU 1] 01:00.1 Audio device [0403]: NVIDIA Corporation GF119 HDMI Audio Controller [10de:0e08] (rev a1)
[IOMMU 2] 00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 630 [8086:5912] (rev 04)
[IOMMU 3] 00:14.0 USB controller [0c03]: Intel Corporation 200 Series PCH USB 3.0 xHCI Controller [8086:a2af]
[IOMMU 4] 00:16.0 Communication controller [0780]: Intel Corporation 200 Series PCH CSME HECI #1 [8086:a2ba]
[IOMMU 5] 00:17.0 SATA controller [0106]: Intel Corporation 200 Series PCH SATA controller [AHCI mode] [8086:a282]
[IOMMU 6] 00:1b.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #17 [8086:a2e7] (rev f0)
[IOMMU 7] 00:1b.3 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #20 [8086:a2ea] (rev f0)
[IOMMU 8] 00:1b.4 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #21 [8086:a2eb] (rev f0)
[IOMMU 9] 00:1c.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #1 [8086:a290] (rev f0)
Здесь видно, что практически все устройства пересекаются на корневой шине с номером 00, а так же многие собраны в общие IOMMU группы. Это значит что их нельзя будет передать в гостя так чтобы управлять родным драйвером гостя. Но GeForce GT 610 находится на персональной шине 01:00.0, а так же в собственной группе IOMMU 1, которую делит лишь с встроенной в неё же звуковой картой. Это значит что видеокарты на этой материнке будут пробрасываться на ура. Так же видно что USB controller ASMedia Technology Inc. Device тоже висит на персональной PCI линии и IOMMU группе. К несчастью этот контроллер не был выведен на заднюю панель и даже привычный штырьковый разъём на материнке оказался не им. Им оказался инопланетный USB3.1 Gen2, визуально похожий больше на sata, проводок для него только на али есть по 1500 руб. Но с ним таки звуковую карту в гостя я наконец пробросил.