Аннотация:
Благодаря работе разработчиков проекта Asahi Linux ядро Linux вскоре будет поддерживать протокол USB4 на устройствах с чипами M1/M2/M3. Этот набор функций ранее существовал в исходном коде, поддерживаемом Asahi Linux. Целью этого предложения является, главным образом, продвижение соответствующих драйверов для официального выхода в основную ветку Linux.

Архитектура Apple USB4 отличается от архитектуры обычных ПК:
Протокол USB4, предоставляемый Apple в устройствах, оснащенных чипами M, отличается от обычных ПК. Каждый интерфейс Apple USB4 Type-C содержит аппаратный модуль ACIO, который объединяет сопроцессор Cortex-M3, маршрутизацию хоста USB4, собственную плоскость управления хостом и DART IOMMU.
Это оборудование не подключено постоянно к главному процессору. Главный процессор может получить доступ к внутренним устройствам только через окно MMIO размером 16 МБ после работы сопроцессора ACIO. Поэтому драйверу необходимо включить модуль ACIO в соответствии с состоянием подключения интерфейса, запустить сопроцессор RTKit, а затем динамически создать устройства DART и NHI.
При отключении интерфейса устройство необходимо уничтожить и выключить в обратном порядке. Это также основная причина, по которой устройствам Apple, оснащенным чипами M, долгое время было трудно получить поддержку Linux.
Драйверы NHI требуют большой обработки, специфичной для Apple:
Патч, представленный инженерами Asahi Linux, добавляет более 1000 строк кода драйвера для протокола Apple Thunderbolt. Патч также изменяет существующее ядро Thunderbolt ядра Linux. Apple NHI позволяет каждому кольцу иметь независимый дизайн прерываний, а его расположение регистров, конфигурация кольца и обработка терминалов отличаются от универсального контроллера USB4.
В M3 Apple реализует более строгое управление и предоставляет до 24 записей IOMMU для разных колец TX/RX, чтобы улучшить изоляцию между различными каналами данных. Аппаратное обеспечение Apple также не реализует некоторые регистры распределения полосы пропускания USB3, ожидаемые существующим кодом USB4 в Linux, поэтому в патче, представленном инженерами Asahi Linux, специально добавлен Quirk для обхода связанного процесса.
Поддержка Thunderbolt еще не полная:
Первая партия кода в настоящее время поддерживает только соединения между хостами XDomain и туннелирование USB3-over-USB4. Туннелирование устройств PCIe и видеотуннелирование DP еще не завершены. Таким образом, правильная работа таких сценариев, как док-станции Thunderbolt, внешние видеокарты, высокоскоростные устройства PCIe и мониторы, подключенные по протоколу Thunderbolt, по-прежнему не гарантируется.
Патч, представленный инженерами Asahi Linux, был разработан и протестирован на платформе M1/M2/M3, но в настоящее время он находится на стадии проверки списка рассылки ядра Linux и еще не был официально объединен с ядром Linux.
Комментарии