Linux 6.15内核更新:ARM/RISC-V架构优化与文件系统增强
1. Linux 6.15 版本概述Linux内核6.15版本在经历了一个小插曲后终于发布——由于最后一刻发现的bug报告导致某个新功能在最后关头被禁用这使得正式发布比原计划推迟了几小时。不过正如Linus Torvalds在发布公告中所说除了这个最后的忙乱外整个开发周期看起来相当正常。这个版本包含了遍布各处的各种小修复其中驱动程序更新照例占据了大部分内容。值得注意的是这个版本包含了一些bcachefs文件系统的修复、核心网络子系统的改进以及内存管理(MM)相关的修正。虽然改动点不少但整体上没有什么特别令人担忧的问题。随着6.15版本的发布合并窗口(marge window)也如期开启。Linus幽默地提到就像美国邮政服务(USPS)的信条一样无论是下雪、下雨、炎热还是黑夜——甚至是美国的阵亡将士纪念日——都无法阻止合并窗口的开启。当然他也承认去年冬天的冰暴确实曾暂时中断过合并窗口这算是个例外。2. 主要架构更新解析2.1 ARM架构更新ARM架构在6.15版本中获得了大量更新各大SoC厂商都有显著改进2.1.1 Allwinner平台H616 SoC时钟驱动扩展以支持TCON时钟和复位启用GPU时钟在频率变化时的重新父级设置A523/T527 SoC新增看门狗支持、时钟驱动、引脚控制驱动和NMI控制器设备树(DTS)变更为Anbernic RG35XX游戏掌机启用USB和LED支持修复重启GPIO检测逻辑禁用不存在的电池热敏电阻新增支持NetCube Systems Kumquat开发板(基于Allwinner V3s SoC)2.1.2 Rockchip平台RK3588JCPU频率限制与厂商内核保持一致以适应工业级温度范围新增驱动支持RK3576 hdptx PHY、RK3562 naneng-combo PHY、RK3528和RK3562时钟、RK3528引脚控制PCIe控制器描述RK3568和RK3588的BAR为可调整大小(Resizable)而非固定(Fixed)新设备支持包括Firefly ROC-RK3576-PC、Radxa ROCK 4D、Orange Pi 5 Ultra等开发板2.1.3 Amlogic平台引脚控制新增A4子驱动定义上拉/下拉电阻值为60 kΩ时钟驱动修复G12 SoCs上mmc A时钟门定义正确设置G12B上的CPU集群APWM控制器切换到新的设备树绑定2.1.4 三星平台PHY驱动新增MIPI D-/C-PHY驱动Exynos Auto v920 UFS PHY驱动新增支持Exynos USI v1串行引擎、Exynos ACPM协议驱动(用于Google GS101 SoC)设备树更新为Google Pixel 6 Pro添加支持Exynos 990新增PERIS时钟控制器2.2 RISC-V架构更新RISC-V架构在6.15版本中获得了多项重要扩展支持新增指令集扩展支持BFloat16浮点扩展、Zaamo和Zalrsc扩展以及Zicbom、Zicntr和Zihpm扩展子架构选择系统清理Kconfig配置系统清理文档改进各种检测修复向量扩展依赖验证现在会在解析设备树时验证向量相关扩展的依赖关系其他改进支持可重定位的!MMU内核构建、hpge pfnmaps(改进TLB利用率)、运行时常量(提升d_hash()性能)2.3 MIPS架构更新虽然MIPS架构的更新相对较少但仍有一些值得注意的变化新增多集群配置支持为EyeQ6添加启用多集群模式的quirks为ralink添加DTS时钟支持(特别是omega2和vocore2开发板)Realtek DTS清理3. 文件系统与存储改进3.1 挂载API增强Linux 6.15对文件系统挂载API进行了多项重要改进新的fanotify机制API可以接收关于文件系统挂载和卸载事件的信息。虽然文档尚不完善但这个功能为系统监控提供了新的可能性。statmount()系统调用增强现在可以接收关于应用到文件系统挂载的ID映射信息。这在容器化环境中特别有用可以更精确地跟踪和管理挂载点的权限映射。ID映射挂载链现在可以创建另一个已经ID映射挂载的ID映射挂载从而改变映射关系。这为复杂的权限管理场景提供了更大的灵活性。挂载API变更使组装复杂的文件系统层次结构变得更加容易同时不会暴露部分结果或本应保持隐藏的任何文件系统部分。3.2 FUSE子系统改进FUSE(用户空间文件系统)在6.15版本中获得了两个重要增强请求超时强制执行现在FUSE可以对请求强制执行超时当用户空间服务器无响应时实现恢复。这对于提高FUSE文件系统的可靠性至关重要。长文件名支持FUSE现在可以处理超过1,024个字符的文件名满足了现代文件系统对长路径名的需求。3.3 新fwctl子系统6.15版本合并了新的fwctl子系统设计用于将命令数据直接传递给复杂的固件系统。当前版本已经合并了三个驱动程序CXL设备驱动mlx5适配器驱动AMD/Pensando分布式服务卡驱动这个子系统为那些需要与复杂固件深度交互的设备提供了标准化的接口简化了驱动开发。4. 硬件支持与驱动更新4.1 单板计算机支持Linux 6.15为众多流行的单板计算机和嵌入式平台带来了改进Raspberry Pi 5修复了BCM2712 irqchip驱动的Kconfig依赖关系恢复了原生CS探测Orange Pi 5 Ultra新增对这个RK3588开发板的支持Radxa系列新增对ROCK 4D(RK3576)和NIO-12L开发板的支持Firefly ROC-RK3576-PC新增对这个RK3576单板计算机的支持4.2 移动设备支持6.15版本也包含了对多款移动设备的改进Google Pixel系列为Pixel 6 Pro添加了完整支持包括framebuffer和reboot-mode华为Matebook E Go新增对LTE版、标准版和2023版的支持三星Galaxy S8为dreamlte型号启用了microSD和触摸屏支持4.3 网络与无线改进网络子系统在6.15版本中获得了多项增强Qualcomm平台继续完善ath12k驱动的MLO(多链路操作)支持MediaTek平台为mt7996芯片准备MLO支持通用网络lan78xx驱动修复防止设备启动时陷入中断循环Rockchip平台为RK3528添加以太网控制器初步支持和集成PHY电源管理5. 开发者工具与调试增强5.1 调试功能改进Synopsys HDMI接收器在arm64 defconfig中启用方便多媒体调试Rockchip支持为DWC调试功能添加调试fs支持PCIe调试改进多个平台的PCIe控制器调试能力5.2 性能监控与分析RISC-V perf新增对SiFive P550、P650和Bullet事件的支持Qualcomm Iris新增视频编码器/解码器驱动及其时钟控制器内存管理改进hpge pfnmaps提升TLB利用率6. 重要变更与向后兼容性6.1 32位x86大系统支持移除Linux 6.15移除了对拥有超过8个CPU或超过4GB内存的32位x86系统的支持。做出这一决定的原因是这类硬件已经长期不可用需要更多核心和内存的工作负载早已迁移到64位系统维护这些边缘情况的成本超过了收益开发者如果需要支持这类配置应该考虑停留在较早的内核版本或迁移到64位环境。6.2 驱动ABI变更多个驱动子系统在6.15版本中经历了ABI变更Qualcomm ICE驱动改进了客户端接口以避免引用泄漏MediaTek MMSYS驱动全面检查表项修复错误的掩码/值对Samsung Exynos切换到新的PWM控制器绑定这些变更虽然可能暂时影响某些定制驱动但长远来看提高了代码质量和可维护性。7. 升级建议与注意事项对于考虑升级到Linux 6.15的用户和开发者以下建议值得关注文件系统用户新的挂载API和FUSE改进值得关注但生产环境升级前应充分测试ARM开发者各大SoC厂商的更新可能带来性能提升但也可能需要调整设备树配置RISC-V用户新扩展支持为高性能计算打开了新可能但需要相应的工具链支持嵌入式开发者众多单板计算机的新支持降低了移植难度内核开发者多个子系统的内部重构虽然不直接影响API但可能影响定制补丁特别需要注意的是从6.15开始内核将不再支持某些过时的硬件配置如大型32位x86系统。在升级前务必检查目标平台的兼容性。