Linux
已啟用 VT-d 支持,但缺少 IOMMU 組
在Supermicro A2SDi-8C+-HLN4F Atom C3758 系統上,我看到 BIOS 中啟用了 VT-d 支持,但我在 Linux(Fedora 31)下找不到任何 IOMMU 組:
$ ls /sys/kernel/iommu_groups $
核心日誌似乎表明檢測到 VT-d:
# journalctl -k | grep 'DMAR\|iommu' | sed 's/^.*kernel: //' ACPI: DMAR 0x000000007E1629C0 000070 (v01 INTEL BDW 00000001 INTL 00000001) DMAR: Host address width 39 DMAR: DRHD base: 0x000000fed90000 flags: 0x1 DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap d2008c40660462 ecap f050da DMAR: RMRR base: 0x0000007f0fa000 end: 0x0000007f10afff DMAR-IR: IOAPIC id 2 under DRHD base 0xfed90000 IOMMU 0 DMAR-IR: HPET id 0 under DRHD base 0xfed90000 DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. DMAR-IR: Enabled IRQ remapping in x2apic mode iommu: Default domain type: Translated
我是否需要配置一些東西才能獲得 IOMMU 組?
背景:我正在調查這個問題,因為我無法將乙太網設備綁定到 vfio-pci 以用於 dpdk:
# /usr/share/dpdk/usertools/dpdk-devbind.py --bind=vfio-pci 07:00.0 Error: bind failed for 0000:07:00.0 - Cannot bind to driver vfio-pci # /usr/share/dpdk/usertools/dpdk-devbind.py --status Network devices using kernel driver =================================== 0000:05:00.0 'Ethernet Connection X553 1GbE 15e4' if=eno1 drv=ixgbe unused=vfio-pci *Active* 0000:05:00.1 'Ethernet Connection X553 1GbE 15e4' if=eno2 drv=ixgbe unused=vfio-pci 0000:07:00.1 'Ethernet Connection X553 1GbE 15e4' if=eno4 drv=ixgbe unused=vfio-pci Other Network devices ===================== 0000:07:00.0 'Ethernet Connection X553 1GbE 15e4' unused=ixgbe,vfio-pci # dmesg | tail -n 3 [ +0.169963] ixgbe 0000:07:00.0: complete [ +0.000561] vfio-pci: probe of 0000:07:00.0 failed with error -22 [ +0.000040] vfio-pci: probe of 0000:07:00.0 failed with error -22
您需要添加
intel_iommu=on
核心載入參數。預設情況下,此參數被禁用(我不知道發行版預設將此參數設置為on
)。在 BIOS 中啟用 IOMMU 後,ACPI 表會在引導期間轉換為核心 DMAR 和核心初始化。
設置
intel_iommu=on
後,核心將系統硬體資源劃分為 IOMMU 組。它的數量和粒度取決於硬體。有關詳細資訊,請參閱VFIO -“虛擬功能 I/O”。