— ◆ —
一、Linux 7.1 值得关注的变化
Linux 7.1 中一些值得注意的更新包括:
● 新版 NTFS 文件系统(再次重写)—— 作者仍然记得 2000 年代中期在 Arm 平台上使用 NTFS 的痛苦,当时必须依赖基于 FUSE 的 NTFS-3G 来获得写入支持,但性能十分有限。此后情况有所改善,例如出现了 ntfs3 项目,但显然还不够,因为现在有了一个『完全重写的版本』,完全支持写入,内部转换为使用 iomap,并承诺将更加积极地维护。
● 安全增强 —— Linux 7.1 引入了用于 Unix 域套接字的 Landlock 安全模块,更严格的 /proc/PID/mem 默认权限覆盖,针对 overlay 文件系统的安全模块钩子,以及 libcrypto 库获得了一系列新算法的支持。
● 高分辨率定时器核心已为获得更好性能而重写;实际意义上,调度器现在可以使用高分辨率定时器,而不会相对使用粗粒度定时器的调度器有性能损失。
● 移除了 swap map,经过数个内核版本实施了各种交换改进。唯一用户可见的变化应该是更好的性能和交换子系统减少的内存使用。
● 移除了一些旧且未使用的 486 子架构(M486、M486SX 和 ELAN)的支持。
— ◆ —
二、Arm 架构变更
与往常一样,Arm 架构有大量变化,以下是按厂商分类的详细更新:
【Arm 核心特性】
● Arm 9.6 LSUI 特性 —— 添加了允许内核在不首先禁用「privileged access never」模式的情况下访问用户空间内存的指令。Linux 7.1 使用这些新指令来加速 futex 操作。
● 内存分区和监控(MPAM)特性的支持已得到改进并暴露给用户空间。
【全志 Allwinner】
● MTD —— SunXi 驱动支持新版本的 Allwinner NAND 控制器。
● 电源管理 —— 添加对 Allwinner A733 电源域的支持。
● 时钟驱动 —— 支持 A523 PRCM 块中的 r-spi 模块时钟。
● 设备树变更 —— Allwinner A523 SoC 系列启用了 LED 控制器;Avaota A1 板启用了 SPI NAND;为 A64 和 H6 添加了 UART DMA 通道;为 H616 添加了标准分辨率 MMIO 定时器。
● 新设备 —— TaiqiCat (TQC) A01 基于 Allwinner H6 的机顶盒。
【瑞芯微 Rockchip】
● 添加了对 Rockchip RV1103B 32 位单核视觉处理器的支持(时钟、pinctrl 等)。
● 时钟 —— 修复 Rockchip rk808 clk 驱动中的 OF 节点泄漏。
● PCIe 控制器驱动 —— 添加 PCIe 控制器 LTSSM 状态转换和链路速率变化的跟踪点;跟踪 dw-rockchip 调试 FIFO 收集的 LTSSM 事件。
● 新设备 —— Khadas Edge 2L (RK3576);Rockchip RK3576 EVB2 板;OneThing Edge Cube (OEC) 基于 RK3566。
【晶晨 Amlogic】
● Pinctrl —— 修复在 sysfs 中操作时引起的 Amlogic 驱动死锁。
● ARM 设备树 —— 放弃 iio-hwmon 转而使用 generic-adc-thermal。
● ARM64 设备树 —— 修复 P230 参考板的以太网 PHY 中断号;为 Amlogic AXG 添加缺失的 cpu0 缓存信息;修复 Khadas VIM4 板型号名称;修复 Amlogic T7 的 GIC 寄存器范围;修复 Khadas VIM4 8GB RAM 的内存布局;为 Amlogic S6 删除 GICv3 PPI 中断的 CPU 掩码。
【三星 Samsung】
● 时钟 —— Axis ARTPEC-9:添加新的 PLL 时钟和八个时钟控制器的新驱动;Exynos Auto v920:添加 G3D (GPU) 时钟控制器;Exynos 850:为 APM 邮箱定义缺失的时钟。
● 修复基于 Exynos5250 的 Google Manta 板的二级 CPU 启动(TZ 固件差异)。
● SoC 驱动 —— ACPM 固件驱动中的一些清理。
● DTS ARM64 变更 —— 添加对 Axis ARTPEC-9 SoC 和 Alfred 板的初始支持;Google GS101 Pixel 手机:描述所有 PMIC 调节器和 Maxim 电量计;Exynos Auto v920:添加 G3D (GPU) 时钟控制器 (CMU)。
● 新设备 —— 基于 Exynos 5250 的 Google Manta (Nexus 10);基于 Exynos 7870 的 Samsung Galaxy J7 (2016) 和 Samsung Galaxy J5 (2017)。
【高通 Qualcomm】
高通平台的更新内容非常丰富:
● 新 SoC —— Qualcomm Glymur(18 核 Oryon-2 CPU,Snapdragon X2 Elite);Qualcomm Mahua(Glymur 的 12 核变体);Qualcomm Eliza(手机 SM7750 和 IoT QC7790S/M 嵌入式平台);Qualcomm IPQ5210(使用 Cortex-A53 核的无线网络 SoC)。
● 时钟 —— 修复 Makena 和 Hamoa 上的 MDP 源时钟停车问题;为 Eliza、Nord、SM8750、Glymur、IPQ5210 平台添加多种时钟控制器。
● Pinctrl —— Eliza 和 Hawi 系列 TLMM 引脚控制器;SDM670 和 Milos 系列 LPASS LPI 引脚控制器;IPQ5210 引脚控制器。
● remoteproc —— 支持超过 10 个 Qualcomm minidump 条目;添加 Eliza 平台的音频 DSP、MDM9607/MSM8917/MSM8937/MSM8940 平台的调制解调器 remoteproc 支持;添加 QMI 服务 ID 列表到 QMI 头文件。
● 其他驱动更新 —— PHY、iommu、PCIe 控制器、WiFi (ath12k) 支持 IPQ5332 监听模式、基本 hwmon 温度报告、IPQ5424 支持;大量驱动更新包括 QSEECOM 允许列表、Gunyah watchdog、LLCC 参考计数替换、OCMEM 驱动改进、pd-mapper 支持、pmic-glink 支持、SMP2P v2 支持等。
● Arm64 设备树更新 —— Snapdragon X Elite 添加 UFS 支持、DisplayPort 音频;IPQ5332/IPQ9574 添加 QPIC SPI NAND 和 eMMC;Snapdragon 8 Elite Gen 5 (SM8850) 添加显示/音频/计算 remoteprocs 等;Snapdragon Ride (SA8775P) 添加 USB 角色切换;Snapdragon 7s Gen 3 (SM7635) 添加 UFS、摄像头控制接口等,启用 Fairphone FP6 支持;Dragonwing IQ8 添加摄像头控制接口和 eMMC 支持;大量其他设备树修复和改进。
● Arm32 设备树更新 —— 放弃 APQ8084 平台(自 2016 年以来无功能性贡献);清理 MSM8974 互连节点中的 RPM 总线时钟。
● Arm64 defconfig 更新 —— 启用 Kaanapali、Glymur、Eliza、SM8750、IPQ5210 的基础驱动;启用 Milos LPASS LPI、WCD937x 耳机编解码器、QCOMTEE 驱动;启用 Arduino Ventuno Q 的以太网和模拟编解码器;启用 Lontium LT8713sx 驱动等。
● 新设备 —— Redmi 4A、Redmi Go、Redmi Note 8T;Arduino Monza (Arduino VENTUNO Q) SBC;Purwa EVK;ECS Liva QCS710 迷你 PC;DB820c Ayaneo Pocket S2 的额外变体;Thundercomm AI Mini PC G1;Samsung Galaxy Core Prime LTE Verizon Wireless;Wiko Pulp 4G;Purwa 变体的 ASUS Vivobook S15;Eliza MTP、Glymur 和 Mahua CRD。
【联发科 MediaTek】
● Pinctrl —— 实现 GPIO .get_direction() 回调以消除 dmesg 警告。
● PHY —— 添加 Mediatek mt8167 dsi-phy。
● WiFi (mt76) —— mt7996/mt7925 MLO 修复/改进;mt7996 NPU 支持(硬件 eth/wifi 流量卸载)。
● 蓝牙 —— 支持 MT6639 (MT7927);支持 MT7902 SDIO。
● DRM —— mtk_dsi:预启用期间启用 hs 时钟;探测期间移除所有冲突的 aperture 设备;添加 mt8167 显示块支持。
● MFD —— 更正 MT6328、MT6331、MT6332 PMIC 的硬件 CID 以允许正确的驱动绑定。
● MediaTek PCIe Gen3 控制器驱动 —— 使用 dev_err_probe() 简化错误路径并使延迟探测消息可见;如果设置失败则关闭设备电源;集成新的 pwrctrl API。
● ARM32 更新 —— 修复 MT7623 中 efuse 节点的 fallback compatible。
● ARM64 设备树更新 —— 修复 MT6795、MT7981B、MT7986A 的 gpio-ranges 引脚;修复 Banana Pi BPI-R4 Pro 型号字符串;MT6359 PMIC 两个默认调节器名称消歧;MT8365 EVK、MT8395 Radxa NIO-12L 和 Genio 1200 添加 eMMC/SD 控制器别名;修复 MediaTek AUDSYS 设备树绑定;MT8195 Cherry Chromebooks 的 WiFi 和蓝牙电源供应正确描述;MT8195 Cherry Dojo 的 M.2 M-Key 插槽使用新的 pcie-m2-m-connector 绑定正确描述。
【其他新 Arm 硬件平台和 SoC】
● Arm —— Zena 虚拟平台(使用 Cortex-A720AE 核心);ARM corstone-1000-a320(使用低端 Cortex-A320 核心的 IoT 参考平台)。
● Aspeed —— 两个额外的 Aspeed BMC 板。
● Axis —— ARTPEC-9(使用 Samsung SoC 平台的 Cortex-A55 核心嵌入式 SoC)。
● Microchip —— LAN9691(arm32 lan966x 系列网络 SoC 的 64 位变体)。
● NXP —— S32N79 汽车 Cortex-A78AE (8x) + Cortex-R52 (12x) SoC;22 个额外的使用 64 位 NXP i.MX8M 或 i.MX9 SoC 的工业/嵌入式板。
● Renesas —— RZ/G3L (r9a08g046) 使用 Cortex-A55 核心的工业嵌入式芯片。
● Texas Instruments —— Toradex Verdin 使用 TI AM62 的四个变体。
【树莓派 Raspberry Pi】
● 为 2712 (Raspberry Pi 5) SoC 添加 V3D DT 节点。
● 为 RP1 姐妹芯片添加 I2C 控制器、CSI(摄像头)、ISP(图像信号处理器),修复 pinctrl 节点,更新 UART10 中断。
● 将固件和 GPU 移至根级别以修复 DTC 警告。
● 为 Raspberry Pi RP1 启用 EEE。
● gpiolib:仅处理一次 gpio-hogs —— 修复了使用固件提供的设备树时导致 Raspberry Pi 5 启动失败的行为变化。
— ◆ —
三、RISC-V 架构更新
RISC-V 支持持续稳步推进,主要更新包括:
【RISC-V 通用更新】
● 添加 Kunit 正确性测试和 strlen()、strnlen()、strrchr() 的微基准测试。
● 添加 RISC-V 特定的 strnlen()、strchr()、strrchr() 实现。
● 添加硬件错误异常处理。
● 清理并优化未对齐访问探测代码。
● 启用 HAVE_IOREMAP_PROT 以使用 generic_access_phys()。
● 移除 XIP 内核支持(因为无人使用)。
● 当地址超出 vmemmap 范围传递给 vmemmap_populate() 时发出警告。
● 更新 ACPI FADT 修订检查,如果至少不是 ACPI v6.6 则发出警告(这是关键 RISC-V 特定表被添加到规范中的版本)。
● 将 COMMAND_LINE_SIZE 增加到 2048 以匹配 ARM64、x86、PowerPC 等。
● 将 kaslr_offset() 设为静态内联函数。
● 添加 KASLR 偏移和 SATP 到 VMCOREINFO ELF 注释以改进 kdump 支持。
● 为 vdso_cfi 复制的源文件添加 Makefile 清理规则,并为该目录中的构建工件添加 .gitignore。
● 移除一些检查 Kconfig 宏的多余 ifdef。
● 为 CFI 自测试添加缺失的 SPDX 许可证标签。
● 简化 RISC-V Makefile 中的 UTS_MACHINE 赋值。
● 澄清一些不清楚的注释并移除一些多余的注释。
● 修复 RISC-V 代码库中的各种英语拼写错误。
【阿里平头哥 T-Head】
● Hwmon —— 为 T-Head TH1520 适配 moortec,mr75203 绑定。
● DRM —— 支持 TH1520 HDMI 及 DT 绑定。
● 设备树更新 —— 更新 T-Head TH1520 RISC-V SoC 设备树以支持 Verisilicon DC8200 显示控制器和 Synopsys DesignWare HDMI TX 控制器;为 LicheePi 4a 板启用 HDMI 输出;为基于 TH1520 的 BeagleV Ahead 板启用显示管线;为 TH1520 PVT 节点添加系数。
【Microchip】
● 添加对 Microchip PIC64GX 嵌入式 RISC-V 芯片的支持(使用 SIFIVE U54 CPU 核心,「没有 FPGA 的 PolarFire SoC」)。
● SoC 驱动 —— 在系统控制器和 syscons 中添加 pic64gx 的覆盖;添加中断复用器驱动。
● 设备树 —— 添加 picgx64 及其 curiosity 板的支持;为 PolarFire SoC 上的 macb ptp 添加缺失的 tsu_clk;解决平台上的 gpio 中断错误描述问题。
【SiFive】
● spi: sifive:修复控制器注销问题。
【算能 Sophgo】
● PCIe 控制器驱动:禁用 Sophgo 2042 PCIe 根端口上广告支持的 ASPM L0s 和 L1。
● DMA 引擎:添加 CV1800B DMA 支持。
【进迭时空 SpacemiT】
● 设备树变更 —— K3 SoC:添加 I2C 支持、PMIC 调节器树、以太网支持、pinctrl/GPIO/时钟、启用完整 UART 支持;K1 SoC:Milk-V Jupiter —— 启用 PCIe/USB、QSPI/SPI NOR 闪存、EEPROM 和 LED;修复 PMIC 电源属性;修复 PCIe 缺失的电源调节器。
● 电源管理 —— SpacemiT P1:从设备树绑定中放弃已弃用的「vin-supply」属性;添加单独的调节器电源属性以匹配实际硬件拓扑。
【赛昉 StarFive】
● USB:添加对 StarFive JHB100 SoC 的支持。JHB100 包含 2 个 dwc3 USB 控制器和以 USB 2.0 速度工作的 PHY。
— ◆ —
四、MIPS 架构变更
与往常一样,MIPS 的更新相当简洁,主要围绕 Mobileye EyeQ6Lplus 的支持和若干修复:
● 支持 Mobileye EyeQ6Lplus 平台
● 清理和修复
具体提交内容包括:
● MIPS/mtd:在通用 NAND 平台数据中处理 READY GPIO
● MIPS/input:将 RB532 按钮迁移到 GPIO 描述符
● MIPS:在追加前验证 DT bootargs
● MIPS: Alchemy:移除未使用的前向声明
● MAINTAINERS:Mobileye:添加 EyeQ6Lplus 文件
● MIPS: config:添加 eyeq6lplus_defconfig
● MIPS:添加 Mobileye EyeQ6Lplus 评估板 dts
● MIPS:添加 Mobileye EyeQ6Lplus SoC dtsi
● clk: eyeq:添加 Mobileye EyeQ6Lplus OLB
● clk: eyeq:调整 PLL 精度计算
● clk: eyeq:计算 PLL 频率时跳过后分频器
● pinctrl: eyeq5:添加 Mobileye EyeQ6Lplus OLB
● pinctrl: eyeq5:使用匹配数据
● reset: eyeq:添加 Mobileye EyeQ6Lplus OLB
● MIPS:添加 Mobileye EyeQ6Lplus 支持
● dt-bindings: soc: mobileye:添加 EyeQ6Lplus OLB
● dt-bindings: mips:添加 Mobileye EyeQ6Lplus SoC
● MIPS: dts: loongson64g-package:切换到 Loongson UART 驱动
● mips: pci-mt7620:重做初始化过程
● mips: pci-mt7620:添加更多寄存器初始化值
— ◆ —
— END —
更多嵌入式开发板交流,欢迎加入微信群