PCI 및 Thunderbolt 장치와 일치

PCI 및 Thunderbolt 장치와 일치

Linux 시스템에서 특정 Thunderbolt 장치(예: eGPU 인클로저, 도크)를 통해 연결된 PCI 장치(예: 그래픽 카드)를 찾는 안정적인 방법이 있습니까?

문맥
내 특정 사용 사례에서는 연결된 TB3 eGPU를 감지하고 식별하는 데 가장 관심이 있습니다. PCI 기반 비디오 장치를 감지할 수 있지만 연결된 Thunderbolt 장치와 일치시킬 수 있으면 다음 문제를 해결하는 데 도움이 됩니다.

  1. 특정 비디오 장치가 eGPU인지 안정적으로 감지합니다.
  2. eGPU 인클로저를 식별하여(TB UUID를 통해) 동일한 공급업체/제품이더라도 여러 eGPU를 구별합니다.

현재 PCI와 Thunderbolt 장치에 대한 /sys/bus/pci/devices정보를 별도로 분석하고 있습니다 /sys/bus/thunderbolt/devices/.


시도 실패: PCI 버스 계층 구조 사용
불행하게도 PCI 버스 계층 구조는 이와 관련하여 별로 도움이 되지 않는 것 같습니다. Thunderbolt 장치를 이름이 지정된 PCI 장치에 매핑할 수 있습니다 Intel Corporation JHL7540 Thunderbolt 3 NHI.하지만, 두 Thunderbolt 장치(두 개가 연결된 경우)는 모두 동일한 장치를 가리킵니다. 또한 비디오 카드(eGPU)의 PCI 장치는 다른 PCI 버스의 하위 항목이므로 PCI 비디오 장치(eGPU)를 해당 Thunderbolt 장치(eGPU 인클로저)에 직접 매핑하는 것이 불가능해 보입니다.

아직은 그게 무슨 뜻인지 잘 이해하지 못하지만, 커널 문서에서 찾은 다음 구절을 보면 이 관찰이 어느 정도(?) 확인되는 것 같습니다.

Thunderbolt 호스트 컨트롤러에는 PCIe 스위치를 관리하기 위한 여러 개의 PCIe 핫 플러그 ​​포트와 NHI 장치가 포함되어 있습니다. 시스템 절전 모드에서 다시 시작할 때 NHI 장치는 핫 플러그 ​​포트를 다시 시작하기 전에 연결된 장치에 대한 PCI 터널을 다시 설정해야 합니다. 핫플러그 포트가 NHI의 하위 포트인 경우 PM 코어는 자동으로 이 복구 명령을 실행합니다.하지만 안타깝게도 그들은 이모들이다..

https://www.kernel.org/doc/html/v4.14/driver-api/device_link.html?highlight=thunderbolt#examples

자원
나는 커널을 처음 접했고 내 시스템을 직접 검사하고 그로부터 결론을 도출함으로써 이 대부분을 발견했습니다. 누군가 나에게 Linux/PCI/Thunderbolt의 유용한 리소스에 대한 링크를 제공할 수 있다면 이미 많은 도움이 될 것입니다. 완전성을 기하기 위해 학습 과정에서 유용했던 몇 가지 링크를 여기에 나열했습니다.

관련 정보