AMD-VI IOTLB_INV_TIMEOUT
AER: Corrected error received
RX580용으로 모든 PCIe 슬롯을 예약하면 이와 같은 오류나 커널 패닉으로 인해 컴퓨터가 부팅되는 것을 방지할 수 있습니다. Linux 매개변수를 추가 iommu=soft
하고 pci=noaer
시작 문제를 해결합니다. Lubuntu 및 Ubuntu 20.04에서는 커널 drm에서 다음 로그가 표시됩니다.
00:58:47 lubu kernel: [drm] PCIE GART of 256M enabled (table at 0x000000F400000000).
00:58:47 lubu kernel: [drm] UVD and UVD ENC initialized successfully.
00:58:47 lubu kernel: [drm] VCE initialized successfully.
00:58:47 lubu kernel: [drm] Cannot find any crtc or sizes
또한 Ubuntu 20.04에서 gdm3은 내 Journalctl에 다음과 같은 많은 메시지를 보냅니다.
14:02:36 ub20 /usr/lib/gdm3/gdm-x-session[1334]: (II) AMDGPU(0): EDID vendor "GSM", prod id 19311
14:02:36 ub20 /usr/lib/gdm3/gdm-x-session[1334]: (II) AMDGPU(0): DDCModeFromDetailedTiming: 720x480 Warning: We only handle separate sync.
14:02:36 ub20 /usr/lib/gdm3/gdm-x-session[1334]: (II) AMDGPU(0): Using EDID range info for horizontal sync
14:02:36 ub20 /usr/lib/gdm3/gdm-x-session[1334]: (II) AMDGPU(0): Using EDID range info for vertical refresh
14:02:36 ub20 /usr/lib/gdm3/gdm-x-session[1334]: (II) AMDGPU(0): Printing DDC gathered Modelines:
그러나 GPU를 광범위하게 사용하면 두 배포판 모두에서 무작위로 시스템이 정지되는 현상이 발생합니다. 주로 Journalctl을 확인하면 다음과 같은 오류 로그가 표시됩니다.
00:59:06 lubu kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring sdma0 timeout, signaled seq=175, emitted seq=177
00:59:06 lubu kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process pid 0 thread pid 0
00:59:06 lubu kernel: amdgpu 0000:07:00.0: amdgpu: GPU reset begin!
30 00:59:06 lubu kernel: amdgpu: [powerplay]
last message was failed ret is 65535
또는
kernel: [drm:amdgpu_dm_atomic_commit_tail [amdgpu]] *ERROR* Waiting for fences timed out!
kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx timeout, signaled seq=4226, emitted seq=4228
일부 Linux 사용자는 iommu=pt
이러한 문제를 해결했다고 보고했습니다.https://bbs.archlinux.org/viewtopic.php?id=250297.
나는 몇 달 동안 이 문제로 인해 혼란스러워했으며 여기서 무슨 일이 일어나고 있는지 더 배우고 이해하고 싶습니다. 그래서 iIOMMU 튜닝에 관한 Linux 커널 문서를 읽었습니다.https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html가능한 매개변수와 그 의미https://www.kernel.org/doc/Documentation/x86/x86_64/boot-options.txt.
저는 IOMMU 전문가가 아니기 때문에 GART, 재매핑 해제, 바운스 버퍼링(SWIOTLB), amdgpu와 Linux 시스템 자체 간의 상호 작용과 같은 용어를 이해하기 어렵습니다. 읽을 수 있음: iommu=soft
Linux가 소프트웨어 바운스 버퍼링(SWIOTLB)을 사용함을 나타냅니다. SWIOTLB는 기본적으로 noforce
운영 체제가 내 PC에서 부팅되는 것을 방지합니다. noforce
이는 하드웨어 IOMMU가 강제로 사용되지 않음을 의미합니다.
amd_iommu
그런 다음 하드웨어 설정에 중요한 또 다른 매개변수가 있습니다 . 이 옵션에는 fullflush, off, force_isolation의 세 가지 값이 있습니다. 안타깝게도 이 옵션의 기본값이 무엇인지 모르겠습니다.
내 빠른 질문은: 매개변수의 가장 좋은 조합은 무엇이며 iommu
내 amd_iommu
하드웨어가 Ryzen5에서 RX580을 최대한 활용할 수 있는 방법은 무엇입니까?
내 추가 질문:
amd_iommu
보충제 인가요iommu
? 아니면amd_iommu
AMD Ryzen CPU 또는 AMD GPU 하드웨어를 의미합니까? 만약 있다면 Ryzen 칩셋을 말하는 것intel_iommu
같습니다 .amd_iommu
iommu
하드웨어 IOMMU를 강제로 사용하지 않으면 어떤 영향이 있습니까amd_iommu = off
?
좀 더 자세한 설명과 소스코드에 대한 직접 링크를 읽어주시면 정말 감사하겠습니다.
감사해요!