요약:
Asahi Linux 프로젝트 개발자의 작업 덕분에 Linux 커널은 곧 M1/M2/M3 칩이 있는 장치에서 USB4 프로토콜을 지원할 예정입니다. 이 기능 세트는 이전에 Asahi Linux에서 유지 관리하는 다운스트림 코드에 존재했습니다. 이 제출의 중요성은 주로 관련 드라이버가 공식적으로 Linux 메인라인에 진입하도록 홍보하는 것입니다.

Apple의 USB4 아키텍처는 일반 PC와 다릅니다.
M 칩이 탑재된 기기에서 Apple이 제공하는 USB4 프로토콜은 일반 PC와 다릅니다. 각 Apple USB4 Type-C 인터페이스에는 Cortex-M3 보조 프로세서, USB4 호스트 라우팅, 기본 호스트 제어 평면 및 DART IOMMU를 통합하는 ACIO라는 하드웨어 모듈이 포함되어 있습니다.
이러한 하드웨어는 메인 프로세서에 지속적으로 노출되지 않습니다. 메인 프로세서는 ACIO 보조 프로세서가 실행된 후 16MiB MMIO 창을 통해서만 내부 장치에 액세스할 수 있습니다. 따라서 드라이버는 인터페이스 연결 상태에 따라 ACIO 모듈의 전원을 켜고 RTKit 보조 프로세서를 시작한 다음 DART 및 NHI 장치를 동적으로 생성해야 합니다.
인터페이스 연결이 끊어지면 장치를 파괴하고 역순으로 전원을 꺼야 합니다. 이는 M 칩이 탑재된 Apple 장치가 오랫동안 Linux 업스트림 지원을 받기 어려운 주된 이유이기도 합니다.
NHI 드라이버에는 많은 Apple 관련 처리가 필요합니다.
Asahi Linux 엔지니어가 제출한 패치에는 Apple Thunderbolt 프로토콜용 드라이버 코드 라인이 1,000줄 이상 추가되었습니다. 이 패치는 또한 Linux 커널의 기존 Thunderbolt 코어를 수정합니다. Apple NHI는 각 링이 독립적인 인터럽트 설계를 가질 수 있도록 하며 레지스터 레이아웃, 링 구성 및 터미널 처리는 범용 USB4 컨트롤러와 다릅니다.
M3에서 Apple은 더 엄격한 관리를 구현하고 다양한 TX/RX 링에 대해 최대 24개의 IOMMU 항목을 제공하여 다양한 데이터 채널 간의 격리를 강화합니다. 또한 Apple 하드웨어는 Linux의 기존 USB4 코드에서 예상되는 일부 USB3 대역폭 할당 레지스터를 구현하지 않으므로 Asahi Linux 엔지니어가 제출한 패치에는 관련 프로세스를 우회하기 위해 특별히 Quirk를 추가했습니다.
아직 Thunderbolt 지원이 완벽하지 않습니다:
첫 번째 코드 배치는 현재 XDomain 호스트 간 연결과 USB3-over-USB4 터널링만 지원합니다. PCIe 장치 터널링 및 DP 비디오 터널링은 아직 완료되지 않았습니다. 따라서 Thunderbolt 도킹 스테이션, 외부 그래픽 카드, 고속 PCIe 장치 및 Thunderbolt 프로토콜을 통해 연결된 모니터와 같은 시나리오는 여전히 제대로 작동하지 않을 수 있습니다.
Asahi Linux 엔지니어가 제출한 패치는 M1/M2/M3 플랫폼에서 개발 및 테스트되었지만 현재 Linux 커널 메일링 목록 검토 단계에 있으며 아직 공식적으로 Linux 커널에 병합되지 않았습니다.
댓글