Linux gains initial USB4 support on Apple M1, M2, and M3
A mainline patch series brings first Thunderbolt host-router bring-up to Apple Silicon, limited for now to XDomain links and USB3 tunnels.
Sven Peter has posted a 19-part series to the Linux kernel list adding initial USB4 and Thunderbolt support for Apple Silicon machines based on the M1, M2, and M3 SoCs.
Each USB4-capable Type-C port on these chips includes an ACIO (Apple Converged I/O) block: a Cortex-M3 co-processor plus the host router hardware, Native Host Interface (NHI), and a DART IOMMU. The main SoC only sees a 16 MiB MMIO window into that block while the co-processor is running, so the driver boots ACIO first, then exposes the NHI and IOMMU, and tears them down again before power-off. Startup is tightly ordered with the Type-C PHY and port controller; reverse teardown rules forced a new Thunderbolt mode switch rather than reusing the existing Type-C path.
Core Thunderbolt code gains hooks for Apple’s different NHI register layout and interrupt model, reads the host router DROM from the device tree, and applies quirks where Apple hardware diverges (no DMA port for firmware updates, no USB3 bandwidth-allocation registers). Device-tree nodes cover M1 and M2; M3 nodes are deferred until more of the stack lands, though the current code has already been tested there.
Only XDomain connections and USB3-over-USB4 tunnels work so far. Full PCIe and DisplayPort tunneling remain future work, but the series is the first concrete step toward mainline Thunderbolt on Apple Silicon Macs running Linux.