IOMMU 그룹이 너무 적습니다. 분할됩니까?

IOMMU 그룹이 너무 적습니다. 분할됩니까?

AMD RyZEN 5 2400G, Gigabyte B450M D3SH 및 16GB RAM을 구입했습니다. AMD Radeon HD 6XXX의 구형 GPU 중 일부가 지나가는 것 같습니다. 하지만 IOMMU의 그룹화는 나에게 불쾌한 놀라움으로 다가왔다.

GPU를 첫 번째(16/16) 또는 세 번째(16/8) PCIe 슬롯에 배치했고 두 경우 모두 iommu 그룹 0에 포함되어 있음을 발견했습니다. 하지만 이 iommu 그룹의 다른 구성원은 VM에 전달될 수 없으며 호스트 시스템에서 제외될 수도 없습니다. iommu 그룹은 4개(0 - 3)뿐인 반면 튜토리얼과 다른 PC에서는 12개 이상의 그룹을 보았고 일부 PCIe 슬롯은 단일 그룹 내에서 매우 격리되어 있습니다. 질문: 아는 사람 있나요:

  • 추가 하드웨어를 구입해야 합니까?
  • 더 많은 iommu 그룹(분할)을 얻을 수 있는 커널 옵션이 있습니까?
  • uEFI 대신 레거시 BIOS를 사용해야 합니까?

SVM을 활성화하고 IOMMU를 활성화합니다. 운영 체제: Debian Linux testitng, 커널 5.10, 커널 cmd 옵션iommu=on amd_iommu=on

iommu 제로 그룹:

01:00.0 USB       [0c03]: [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
01:00.1 SATA      [0106]: [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
01:00.2 PCIbridge [0604]: [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
02:00.0 PCIbridge [0604]: [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
04:00.0 Ethernet  [0200]: Realtek Co. Ltd. RTL8111/8168/8411 PCIe Gigabit Eth [10ec:8168] (rev 0c)
05:00.0 VGA       [0300]: [AMD/ATI] Turks PRO [Radeon HD 6570/7570/8550] [1002:6759]
05:00.1 Audio dev [0403]: [AMD/ATI] Turks HDMI Audio [Radeon HD 6500/6600/6700M Series] [1002:aa90]
06:00.0 NVMe      [0108]: Intel NVMe Optane Memory [8086:2522]

그룹 1

...
08:00.0 VGA       [0300]: [AMD/ATI] Raven Ridge [Radeon Vega (Mobile) Series] [1002:15dd] (rev c6)
08:00.1 Audio dev [0403]: [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller [1002:15de]
...

보시다시피 APU(CPU 칩에 통합된 GPU)는 그룹 1에 속합니다.

답변1

음, 이것은 매우 복잡한 질문인 것 같습니다. 이것은 정말 수수께끼입니다. 먼저 안정버전보다 위험한 데비안 테스트(Bullseye)를 설치했기 때문에 운영체제를 의심했습니다. 그래서 몇 가지 커널 패치를 검색했습니다. 예, 패치가 존재하지만 보안 취약성으로 인해 사용이 권장되지 않습니다. 그런 다음 칩셋과 마더보드 IOMMU 옵션의 자세한 사양을 검색했습니다. 이 정보는 분명히 고객이나 잠재 구매자에게 중요하지 않습니다.

절박한 며칠을 보낸 후 uEFI BIOS 설정을 단계별로 재부팅했습니다. 마침내 나는 가상화와 관련된 설정이 다양한 (하위) 메뉴 항목에 분산되어 있다는 사실을 깨달았습니다. 그래서 당신은 확인해야합니다 :

MIT\Advanced Freq. Settings\Advanced CPU Settings\SVM Mode = Enabled !
Chipset\IOMMU = Enabled !
Peripherals\AMD CBS\PCIe ARI Support = Disable !

마지막 항목인 PCIe ARI 지원은 IOMMU 그룹 분리에 매우 중요합니다. 이 BIOS 옵션에 대한 자세한 설명을 찾지 못했습니다. 그러나 올바르게 설정한 후에는 이제 12개의 IOMMU 그룹이 있고 PCIe 슬롯 1의 GPU는 단일 그룹 9(GPU 및 관련 오디오)에 있습니다.

제가 직접 작성한 답변이라 하더라도 이 게시물이 누군가에게 도움이 되기를 바랍니다.

2021-03-16 편집: 최근 ARI(Lama에게)로부터 설명을 받았습니다. PCI의 이전 주소 지정에서는 주소 수와 하위 주소가 5비트이고 하위 주소가 3비트라고 가정하여 주소와 하위 주소가 사용되었습니다. 따라서 32개의 서로 다른 PCI 장치만 사용할 수 있지만 각 장치는 8개의 하위 장치(예: GPU 및 오디오)를 보유할 수 있습니다. ARI는 5번째와 3번째 비트 주소를 하위 주소가 없는 8비트 주소로 집계하므로 256개의 서로 다른 PCI 장치를 가질 수 있습니다. 그러나 이로 인해 그룹화가 크게 변경됩니다. 일부 소식통은 uEFI BIOS의 기본 구성이 얼마 전에 ARI를 비활성화하도록 변경되었다고 주장합니다.

답변2

첫 번째 답변은 매우 복잡합니다!

간단한 대답은 다음과 같습니다. ACS(액세스 제어 서비스) 기능이 있는 PCIe 장치는 ACS 없이 IOMMU 그룹을 소유하고 업스트림 장치에 의존합니다.

ACS 기능은 공급자에 따라 다릅니다(예: RyZEN CPU 포함 및 칩셋 없음).

그러나 일부 커널 버전에서는 이를 변경하므로 "pve unraid iommu 그룹 패치"를 검색해 볼 수 있습니다.

마지막으로 "PCIe ARI 지원"에 대한 답변 감사드립니다. 도움이 되었습니다. 하지만 BIOS를 변경할 필요는 없으며 커널 매개변수만 추가하면 pci=noari됩니다.

관련 정보