#!/bin/bashfor d in $(find /sys/kernel/iommu_groups/ -type l | sort -n -k5 -t/); do n=${d#*/iommu_groups/*} n=$(echo "$n" | cut -d'/' -f1) printf 'IOMMU Group %s ' "$n" lspci -nns "${d##*/}"done;
NOTE
Updated version (the old one also works):
#!/bin/bashshopt -s nullglobfor g in /sys/kernel/iommu_groups/*; do echo "IOMMU Group ${g##*/}:" for d in $g/devices/*; do echo -e "\t$(lspci -nns ${d##*/})" done;done;
结果发现 Ethernet controller和两个PCIEx1插槽上面的SATA Expansion card依旧在同一个分组(IOMMU Group 9)里面。
# Probably not a comprehensive list of build dependencies thoughapt install -y \ dh dh-make dh-python build-essential ncurses-dev \ xz-utils libssl-dev libelf-dev bison config-package-dev \ sphinx asciidoc-base dwarves flex libdw-dev libiberty-dev \ libnuma-dev libslang2-dev lz4 xmlto lintian automake \ autoconf libtool# Takes more than 1 hour on my machinemake all# If *.deb files are not built, build deb filesmake deb
Install New Kernel
确认一下deb文件都build出来了。
root@pve:~/pve-kernel# ls *.deb
linux-tools-6.2_6.2.16-10_amd64.deb
proxmox-headers-6.2.16-10-pve_6.2.16-10_amd64.deb
proxmox-kernel-6.2.16-10-pve_6.2.16-10_amd64.deb
proxmox-kernel-libc-dev_6.2.16-10_amd64.deb
linux-tools-6.2-dbgsym_6.2.16-10_amd64.deb
proxmox-headers-6.2_6.2.16-10_all.deb
proxmox-kernel-6.2_6.2.16-10_all.deb
Then
# Install all package (include kernel)
dpkg -i *.deb
#!/bin/bashfor d in $(find /sys/kernel/iommu_groups/ -type l | sort -n -k5 -t/); do n=${d#*/iommu_groups/*}; n=${n%%/*} printf 'IOMMU Group %s ' "$n" lspci -nns "${d##*/}"done;
Example output:
IOMMU Group 0 00:02.0 VGA compatible controller [0300]: Intel Corporation CometLake-S GT2 [UHD Graphics 630] [8086:9bc8] (rev 03)IOMMU Group 1 00:00.0 Host bridge [0600]: Intel Corporation 10th Gen Core Processor Host Bridge/DRAM Registers [8086:9b63] (rev 03)IOMMU Group 2 00:01.0 PCI bridge [0604]: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 03)IOMMU Group 3 00:14.0 USB controller [0c03]: Intel Corporation Comet Lake PCH-V USB Controller [8086:a3af]IOMMU Group 4 00:16.0 Communication controller [0780]: Intel Corporation Comet Lake PCH-V HECI Controller [8086:a3ba]IOMMU Group 5 00:17.0 SATA controller [0106]: Intel Corporation 400 Series Chipset Family SATA AHCI Controller [8086:a382]IOMMU Group 6 00:1b.0 PCI bridge [0604]: Intel Corporation Device [8086:a3e9] (rev f0)IOMMU Group 7 00:1b.4 PCI bridge [0604]: Intel Corporation Comet Lake PCI Express Root Port #21 [8086:a3eb] (rev f0)IOMMU Group 8 00:1c.0 PCI bridge [0604]: Intel Corporation Device [8086:a392] (rev f0)IOMMU Group 9 00:1c.3 PCI bridge [0604]: Intel Corporation Device [8086:a393] (rev f0)IOMMU Group 10 00:1c.4 PCI bridge [0604]: Intel Corporation Comet Lake PCI Express Root Port #05 [8086:a394] (rev f0)IOMMU Group 11 00:1c.5 PCI bridge [0604]: Intel Corporation Device [8086:a395] (rev f0)IOMMU Group 12 00:1d.0 PCI bridge [0604]: Intel Corporation Comet Lake PCI Express Root Port 9 [8086:a398] (rev f0)IOMMU Group 13 00:1f.0 ISA bridge [0601]: Intel Corporation B460 Chipset LPC/eSPI Controller [8086:a3c8]IOMMU Group 13 00:1f.2 Memory controller [0580]: Intel Corporation Cannon Lake PCH Power Management Controller [8086:a3a1]IOMMU Group 13 00:1f.3 Audio device [0403]: Intel Corporation Comet Lake PCH-V cAVS [8086:a3f0]IOMMU Group 13 00:1f.4 SMBus [0c05]: Intel Corporation Comet Lake PCH-V SMBus Host Controller [8086:a3a3]IOMMU Group 14 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070] [10de:2484] (rev a1)IOMMU Group 15 01:00.1 Audio device [0403]: NVIDIA Corporation GA104 High Definition Audio Controller [10de:228b] (rev a1)IOMMU Group 16 03:00.0 Non-Volatile memory controller [0108]IOMMU Group 17 05:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)IOMMU Group 18 06:00.0 SATA controller [0106]: Marvell Technology Group Ltd. 88SE9128 PCIe SATA 6 Gb/s RAID controller [1b4b:9128] (rev 20)IOMMU Group 19 07:00.0 SATA controller [0106]: ASMedia Technology Inc. Device [1b21:1064] (rev 02)IOMMU Group 20 08:00.0 Non-Volatile memory controller [0108]
可以看到 Ethernet controller 和两个 SATA Controller 已经属于不同的 IOMMU Group了。(之前,三个设备都在Group 9)