将 SSD 移动到与第二个 GPU 相同的 IOMMU 组中

将 SSD 移动到与第二个 GPU 相同的 IOMMU 组中

我有一个可运行的 Qemu 配置,具有 GPU 直通功能。现在我还想将 SSD 传递给任务。我读到过,直通设备应该位于同一组中。以下脚本:

#!/usr/bin/env bash
shopt -s nullglob
for 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

显示我的 GPU 位于组 8,但 SSD 位于组 9。

IOMMU Group 8:
        01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117 [GeForce GTX 1650] [10de:1f82] (rev a1)
        01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10fa] (rev a1)
IOMMU Group 9:
        02:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset USB 3.1 XHCI Controller [1022:43ee]
        02:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset SATA Controller [1022:43eb]
        02:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset Switch Upstream Port [1022:43e9]
        03:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43ea]
        03:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43ea]
        03:08.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43ea]
        03:09.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43ea]
        05:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller 980 [144d:a809]
        07:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)

如何将SSD移动到组8?

我已经将driverctl set-override 0000:05:00.0 vfio-pci驱动程序从 更改nvmevfio-pci,但这并没有改变 IOMMU 组。

答案1

IOMMU 组是可以作为“单元”传递的最小 PCI 设备组。这是一个硬件属性,看看你的芯片组,我认为你无法重新配置该硬件。

所以,你不能从一个组中拿走一些东西——否则它就会成为一个自己的组。

因此,您必须通过第 9 组。这看起来不太可能起作用。

相关内容