Linux Kernel开始补齐苹果M设备的雷电支持:M1/M2/M3率先支持USB4协议
内容提要
Linux内核开始为苹果M1/M2/M3芯片设备补齐USB4协议支持,得益于Asahi Linux工程师的努力。首批代码支持XDomain连接和USB3-over-USB4隧道,但PCIe和DP隧道未完成,雷电扩展坞、外接显卡等暂无法正常工作。补丁仍在审查中,未正式合并。
延伸解读
苹果USB4架构的特殊性
苹果M芯片的USB4接口集成了ACIO硬件模块,包含Cortex-M3协处理器、USB4主机路由、原生主机控制面和DART IOMMU等。这些硬件不持续暴露给主处理器,需要根据接口连接状态动态通电和启动协处理器,断开时还需按相反顺序销毁设备。这种设计是Linux上游支持困难的主要原因,也解释了为何需要专门的驱动适配。
当前支持范围与限制
首批补丁仅支持XDomain主机间连接和USB3-over-USB4隧道,PCIe和DP隧道尚未完成。因此,雷电扩展坞、外接显卡、高速PCIe设备以及通过雷电连接显示器等场景目前无法正常工作。用户若依赖这些功能,需等待后续补丁完善,当前版本更适合基础USB4数据传输。
驱动开发的复杂性
补丁新增超过1000行代码,并修改了Linux内核现有雷电核心。苹果NHI的寄存器布局、Ring配置和中断设计与通用USB4控制器不同,M3还提供多达24个IOMMU条目增强隔离,且缺少部分USB3带宽分配寄存器,需通过Quirk绕过。这些差异导致驱动开发工作量巨大,也体现了Asahi Linux工程师的贡献。
Q&A
Linux内核开始支持苹果M1/M2/M3芯片的USB4协议了吗?
是的,Linux内核正在补齐对苹果M1/M2/M3芯片设备USB4协议的支持,这得益于Asahi Linux工程师的工作。目前首批代码已提交,但尚未正式合并到Linux内核主线。
苹果M芯片的USB4架构与普通PC有何不同?
苹果M芯片的每个USB4 Type-C接口都包含名为ACIO的硬件模块,该模块集成Cortex-M3协处理器、USB4主机路由、原生主机控制面以及DART IOMMU等。这些硬件不会持续暴露给主处理器,主处理器只有在ACIO协处理器运行后才能通过16MiB MMIO窗口访问内部设备。
为什么苹果M芯片设备长期以来难以获得Linux上游支持?
因为苹果M芯片的USB4硬件不会持续暴露给主处理器,驱动程序需要根据接口连接状态为ACIO模块通电、启动RTKit协处理器,再动态创建DART和NHI设备,断开时又需按相反顺序销毁设备并断电,这种复杂流程导致上游支持困难。
Asahi Linux工程师为支持苹果雷电协议提交的补丁有哪些特点?
补丁新增超过1000行苹果雷电协议的驱动代码,并修改了Linux内核现有的雷电核心。苹果NHI使每个Ring有独立中断设计,寄存器布局、Ring配置和终端处理方式与通用USB4控制器不同。在M3中,苹果为不同的TX/RX Ring提供多达24个IOMMU条目以增强隔离,且苹果硬件未实现部分USB3带宽分配寄存器,因此补丁加入了Quirk绕过相关流程。
目前Linux内核支持苹果M芯片雷电的哪些功能?
目前首批代码只支持XDomain主机间连接以及USB3-over-USB4隧道,PCIe设备隧道和DP视频隧道尚未完成。因此雷电扩展坞、外接显卡、高速PCIe设备以及通过雷电协议连接显示器等场景暂无法正常工作。
Linux内核的苹果雷电支持补丁目前处于什么状态?
补丁目前已在M1/M2/M3平台进行开发和测试,但当前处于Linux内核邮件列表审查阶段,尚未正式合并到Linux内核中。