IOMMU/dracut/커널 매개변수(VoidLinux에서)를 통해 동일한 하드웨어 ID를 가진 GPU를 분리(보존)하는 방법

IOMMU/dracut/커널 매개변수(VoidLinux에서)를 통해 동일한 하드웨어 ID를 가진 GPU를 분리(보존)하는 방법

무효로 pci/gpu 패스스루를 설정하려고 합니다. 특히, vfio-pci드라이버를 사용하여 GPU 중 하나를 "예약"하십시오. 나는 다음에 설명된 절차를 따랐습니다.이 void-docs PR(및 관련 아치 위키)

나는 RX 580과 RX 570을 가지고 있으며 우리 그룹은 전자의 격리를 허용합니다.

IOMMU Group 0 - 11:
    dummy host bridges and such
IOMMU Group 12:
    03:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
    03:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
    03:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
    20:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
    20:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
    20:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
    22:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
    25:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev ef)
    25:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
IOMMU Group 13:
    26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev e7)
    26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
IOMMU Group 14 - 19:
    dummy functions and audio devices

따라서 RX570을 여러 CPU와 혼합하십시오.

IOMMU group 12: 25:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df]

RX580은 자체 그룹에서 완전히 독립적입니다.

IOMMU group 13: 26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df]

vfio-pci이제 이 두 개의 공유 하드웨어 ID를 볼 수 있으므로 드라이버를 둘 중 하나로 푸시하기 위해 커널 매개변수를 지정할 수는 없으며 둘 다 캡처합니다. (위의 Pull Request 가이드에 설명된 대로)

나는 그들을 분리하려고 노력한다Arch-wiki의 가이드를 따르세요., 내 dracut 구성에 "Passthrough selected GPU" 스크립트를 추가했습니다.

/usr/local/bin/vfio-pci-override.sh

#!/bin/sh

DEVS="0000:26:00.0 0000:26:00.1"

if [ ! -z "$(ls -A /sys/class/iommu)" ]; then
    for DEV in $DEVS; do
        echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override
    done
fi

modprobe -i vfio-pci

/etc/dracut.conf.d/10-vfio.conf

hostonly=" yes "
hostonly_cmdline=" amd_iommu=on iommu=pt "
force_drivers+=" vfio_pci vfio vfio_iommu_type1 vfio_virqfd "
install_items+=" /usr/local/bin/vfio-pci-override.sh "

내가 올바르게 기억한다면 이것이 실행될 때 영향을 미칠 것이지만 xbps-reconfigure --force linuxX.Y 어떤 이유로 amdgpu드라이버는 여전히 두 GPU를 모두 캡처합니다.

파일에 다음 커널 매개변수를 설정했습니다 /etc/default/grub.

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 amd_iommu=on iommu=pt rd.driver.pre=vfio_pci"

어떤 도움이라도 대단히 감사드리며 가이드를 확장하기 위해 위의 PR로 전달될 것입니다. (나는 void 매뉴얼이 그러한 것들을 자세히 설명하기 위한 것이 아니라는 것을 알고 있지만, 아마도 독립형 가이드를 만드는 데 유용할 것입니다)

답변1

나는 또한 Arch Guide를 시도했지만 운이 없었습니다. 이 페이지 하단을 읽어보니 슬프게도 해결책이 보이지 않습니다.

Ubuntu/Kubuntu 20.04 잘 작동하지만 Manjaro의 동일한 하드웨어에는 주사위가 없습니다.

차이점은 initramfs-tools와 mkinitcpio(또는 귀하의 경우 dracut)입니다.

내 Reddit 게시물은 다음과 같습니다.https://www.reddit.com/r/VFIO/comments/tjjb9g/switched_from_kubuntu_to_manjaro_kde_minimal_lts/

관련 정보