Abstract:
Thanks to the work of developers at the Asahi Linux project, the Linux Kernel will soon support the USB4 protocol on devices with M1/M2/M3 chips. This set of functions has previously existed in the downstream code maintained by Asahi Linux. The significance of this submission is mainly to promote the relevant drivers to officially enter the Linux mainline.

Apple’s USB4 architecture is different from ordinary PCs:
The USB4 protocol provided by Apple in devices equipped with M chips is different from ordinary PCs. Each Apple USB4 Type-C interface contains a hardware module called ACIO, which integrates the Cortex-M3 coprocessor, USB4 host routing, native host control plane, and DART IOMMU.
These hardware are not continuously exposed to the main processor. The main processor can only access internal devices through the 16MiB MMIO window after the ACIO coprocessor is running. Therefore, the driver needs to power on the ACIO module according to the interface connection status, start the RTKit coprocessor, and then dynamically create DART and NHI devices.
When the interface is disconnected, the device must be destroyed and powered off in reverse order. This is also the main reason why Apple devices equipped with M chips have long been difficult to obtain Linux upstream support.
NHI drivers require a lot of Apple-specific processing:
The patch submitted by Asahi Linux engineers adds more than 1,000 lines of driver code for the Apple Thunderbolt protocol. The patch also modifies the existing Thunderbolt core of the Linux Kernel. Apple NHI enables each Ring to have an independent interrupt design, and its register layout, Ring configuration and terminal handling are different from the universal USB4 controller.
In M3, Apple implements stricter management and provides up to 24 IOMMU entries for different TX/RX Rings to enhance the isolation between different data channels. Apple hardware also does not implement some of the USB3 bandwidth allocation registers expected by Linux's existing USB4 code, so the patch submitted by Asahi Linux engineers specifically added Quirk to bypass the related process.
It is not yet complete Thunderbolt support:
The first batch of code currently only supports XDomain host-to-host connections and USB3-over-USB4 tunneling. PCIe device tunneling and DP video tunneling are not yet complete. Therefore, scenarios such as Thunderbolt docking stations, external graphics cards, high-speed PCIe devices, and monitors connected through the Thunderbolt protocol are still not guaranteed to work properly.
The patch submitted by Asahi Linux engineers has been developed and tested on the M1/M2/M3 platform, but it is currently in the Linux kernel mailing list review stage and has not yet been officially merged into the Linux kernel.
Comments