Linux 7.0 内核值得关注的变更包括:
- AI编码助手文档 —— Linux 7.0 新增了关于AI编码工具的使用说明。Linux内核开发中允许使用AI工具,但代码提交人需负责审核所有AI生成的代码、确保合规性并对贡献承担全部责任。只有人类可以使用“Signed-off-by”签名,且必须通过“Assisted-by”标签标注所使用的AI工具:
Assisted-by: Claude:claude-3-opus coccinelle sparse
- Rust支持不再处于实验阶段。各子系统维护者仍可自主决定是否在其负责的子系统中启用Rust。
- 全新的通用文件IO错误报告API —— 此前,Linux上的每个文件系统都有各自的机制,通过fsnotify向用户空间报告元数据损坏和文件I/O错误。Linux 7.0引入了通用的fserror基础设施,为文件系统提供了标准方式来排队元数据和文件I/O错误报告,并交付给fsnotify。
- 交换表二期优化,提升交换性能 —— 此前我们报道过Linux 6.18将交换表基础设施用作交换缓存后端,带来了5%至20%的性能提升。交换表代码的二期工作进一步清理并加速了交换子系统代码。详情参见LWN文章。
- zram实现压缩数据回写 —— 此前内核必须先解压页面再写入物理设备(非压缩数据回写),这会不必要地浪费CPU周期和电池电量。现在zram可以直接将压缩后的页面数据写入磁盘。详情参见提交记录。
Linux 7.0 内核Arm架构变更
- 支持具备对应特性的Arm CPU(7及更高版本)的64字节原子加载和存储(FEAT_{LS64, LS64_V})。
- Linux 7.0设备树变更
- A523 —— 新增SPI控制器支持。
- 清理旧的ARM设备树文件,修复DT绑定验证错误。
- D1和A100 SoC新增LED控制器支持。
- D1和T113 SoC新增内部温度传感器支持。
- 引脚控制(Pinctrl) —— 修复瑞芯微驱动中延迟引脚的配置问题
- 多功能设备(MFD) —— 新增瑞芯微RK801 PMIC支持,包括核心MFD和调节器驱动
- 音频编解码(ASoC)
- S/PDIF:代码清理与功能移植
- 显示驱动(DRM)
- 新增RK3368 HDMI支持
- 移除atomic_check修复代码
- 新增RK3506支持
- 改进RK3576/RK3588的热插拔检测(HPD)处理
- 将瑞芯微的inno HDMI支持转换为标准桥接器
- 移除atomic_check修复代码,新增瑞芯微RK3506支持
- 视频处理单元(VPU) —— 为RK3576和RK3588新增264/H.265视频解码器支持
- ARM64设备树
- 修复RK3576 Nanopi R76s和RK3576 EVB1的SD卡支持
- 为RK3576 EVB1添加PCIe插槽覆盖层,启用HDMI和模拟音频
- 在Luckfox Core3576、友善电子NanoPi M5上启用HDMI音频
- 在友善电子NanoPi M5上启用UFS控制器
- 为RK3576的PCIe和GMAC添加dma-coherent属性
- SPI
- spifc-a4:在探测失败和remove()回调中注销ECC引擎
- amlogic-spisg:修复aml_spisg_probe()中的内存泄漏
- spifc-a4:移除冗余的时钟清理代码
- 修复DMA映射错误处理
- 引脚控制(Pinctrl) —— 将模拟的通用引脚控制功能从核心移至Amlogic AM4驱动
- 时钟
- 新增晶晨T7时钟控制器支持(外设、SCMI、PLL)
- 为晶晨S4(S805X2/S905Y4)添加视频时钟
- 修复晶晨gx/g12系列SoC的HDMI PLL后分频器问题
- Linux 7.0晶晨驱动 —— 为S905Y4新增SoC ID
- ARM设备树 —— 弃用iio-hwmon,改用generic-adc-thermal
- Linux 7.0 ARM64设备树
- 代码清理:
- 使用小写十六进制
- 节点名称使用连字符
- 将CPU OPP表和时钟分配移至dtsi
- 移除无用的assigned-clock-parents
- 跨多个系列修复MMC时钟问题
- 在Radxa Zero 2上添加Type-C控制器并启用NPU
三星(Samsung)
- 引脚控制(Pinctrl) —— 新增Exynos 9610(ARM64)引脚控制支持
- PHY —— 更新ExynosAuto v920 USB3、组合hsphy和ssphy支持
- 时钟驱动
- 新增以下时钟控制器:
- ExynosAuto v920 SoC的MFD时钟控制器
- 谷歌GS101 SoC的显示处理单元(DPU)时钟控制器
- 为谷歌GS101 SoC时钟控制器实现自动时钟门控模式(HWACG)(该模式也适用于几乎所有现代Exynos SoC),替代当前使用的手动模式
- SoC驱动
- 大幅改进Exynos ChipID Socinfo驱动,并最终添加谷歌GS101 SoC支持
- 清理部分旧代码
- 记录Axis Artpec-9 SoC PMU(电源管理单元)
- ARM设备树变更 —— 无
- Linux 7.0三星ARM64设备树变更
- ExynosAuto v920 —— 添加MFD时钟控制器节点
- 谷歌GS101:
- 添加真随机数生成器(TRNG)和OTP nvmem节点
- 通过移除syscon回退修正PMU(电源管理单元)兼容性。三星设备上的PMU承担syscon的角色,但在GS101上无法通过标准Linux syscon接口使用,因为寄存器访问需要自定义regmap。此前使用“syscon”兼容回退的方式从未正常工作过。
- 在时钟控制器中添加指向系统寄存器SYSREG块的phandle,为后续启用自动时钟控制做准备
- 为谷歌GS101添加DPU时钟管理单元节点
- 内核配置(Defconfig)变更 —— 无
- 新增SoC
- 高通Milos —— 骁龙7s Gen 3(SM7635)手机SoC,基于Armv9 Kryo核心(Cortex-A720架构),用于Fairphone Gen 6
- 高通Kaanapali —— 基于8颗高性能Oryon CPU核心的SoC
- 引脚控制(Pinctrl) —— 新增高通Mahua TLMM(ARM64)引脚控制支持
- 音频 —— USB:更新高通USB音频Kconfig依赖项和许可证
- Soundwire —— 支持高通2.0控制器
- DMA引擎 —— 新增高通Kaanapali和Glymur GPI DMA引擎支持
- PHY
- 新增高通Glymur PCIe Gen4 2通道PCIe phy、DP和edp phy、USB UNI PHY以及SMB2370 eUSB2中继器支持
- SC8280xp新增QMP UFS PHY支持
- Kaanapali新增PCIe phy和QMP PHY支持
- 新增QCS615 QMP USB3+DP PHY支持
- LED —— 通过在LUT编程期间检查regmap_bulk_write()的返回值,确保高通LPG驱动能检测到硬件写入失败
- 背光 —— 扩展高通WLED驱动,支持PMI8994和PMI8950变体所需的特定过压保护(OVP)值
- 时钟
- 新增高通Kaanapali全局、tcsr、rpmh、显示、GPU、相机和视频时钟控制器
- 新增高通SM8750相机时钟控制器
- 新增高通MSM8940和SDM439全局时钟控制器
- 将时钟分频器从round_rate()转换为determine_rate()
- 修复SDCC RCGs,使其在多个平台上使用shared_floor_ops
- 远程处理器(remoteproc) —— 重构高通安全世界辅助函数,并在高通PAS remoteproc驱动中添加从安全世界读取资源表的支持。用于在Linux运行于EL2的新目标上配置IOMMU
- PCIe控制器驱动
- 将SC8180x DT绑定合并到SM8150
- 将SDX55、SDM845、QCS404、IPQ5018、IPQ6018、IPQ8074 Gen3、IPQ8074、IPQ4019、IPQ9574、APQ8064、MSM8996、APQ8084移至专用模式
- 添加DT绑定和驱动支持,用于由固件配置的SA8255p端点
- 从所有PCIe桥节点解析PERST#,以支持未来将PERST#同时置于交换机下游端口和根端口的平台
- WiFi驱动
- ath11k —— 支持信道频率响应测量
- ath12k
- 大幅重构驱动以支持多wiphy设备,为未来在同一驱动中添加更多设备支持铺平道路(而非拆分为ath13k)
- 支持QCC2072芯片组
- Arm64设备树更新
- QCS6490 —— 在RB3 Gen2上描述TC9563 PCIe交换机控制器
- SA8775P/QCS9075
- 添加GPU和加密模块
- 在互连节点添加IO区域和时钟,以支持QoS配置
- 在评估板(EVK)上启用GPU、TPM和USB支持
- QCS8300
- 添加两个PCIe控制器、相机子系统、tsens、显示子系统、加密、CPUfreq和coresight
- 在评估板(EVK)上启用PCIe总线,以及基于AMC6821的风扇控制器和ST33 TPM芯片
- MSM8939 —— 描述相机子系统。华硕ZenFone 2 Laser/Selfie新增电池和霍尔传感器支持
- 基于Agatti的RB1板 —— 描述PM8008并添加Vision夹层板的覆盖层
- SDM630 —— 描述计算DSP remoteproc、FastRPC及相关实体。描述LPASS LPI引脚控制节点
- SDM845
- 在一加设备上描述引导加载程序帧缓冲区及其资源
- 指定一加、SHIFT和小米设备的ath10k校准变体
- 在小米Pocophone F1上启用传感器remoteproc
- SM7225 —— 描述Fairphone FP4相机的调节器,并添加相机EEPROM
- SM8650 —— 描述相机子系统。在QRD上添加三星S5KJN1相机传感器,为HDK添加“后置摄像头卡”的覆盖层
- SM8750 —— 添加CPUfreq、SDCHCI和Iris(视频编解码)支持,并补充BAM DMA所需的缺失属性。随后在MTP上启用这些功能
- SM6150/QCS615 —— 添加PMU、DisplayPort和USB/DP组合PHY支持。在Talos Ride板上启用DisplayPort
- 骁龙X Elite(Hamoa)
- 新增加密引擎、缺失的TCSR参考时钟和随机数生成器模块
- 修正SoC总线地址宽度以匹配硬件
- 新增联想Thinkpad T14s的HDMI和DisplayPort音频播放支持
- 为华硕Vivobook S 15描述HDMI、Iris(视频编解码)和PS8830重定时器
- Hamoa评估板(EVK)新增PCIe总线、WiFi、背光、TPM和RG(红/绿)LED支持
- 在Medion SPRCHRGD 14 S1上启用QSEECOM,从而支持UEFI变量访问
- 在Agatti上启用ADSP FastRPC并添加缺失的GPU内存区域。同时在SM6115上添加缺失的GPU区域
- 在Hamoa上描述应用子系统看门狗,并在EL2配置中启用
- 在MSM8953上添加相机控制接口(CCI)I2C控制器,并在Fairphone FP3上描述相机调节器和相机EEPROM
- 为一加6的i2c4总线指定时钟频率,以消除关于缺少频率定义的警告
- 在SM8750上添加FastRPC及相关堆内存,以及Coresight
- 将多个平台切换为使用通用RPMPD_常量,而非目标特定的重复常量,以便从头文件中删除这些重复定义
- 移除Talos上QUP OPP表中无效的opp-shared属性
- Arm32设备树更新
- 将MSM8974 remoteproc电源供应迁移至RPM提供的power-domains,与大多数其他平台保持一致
- 为LG Nexus 5添加更人性化的型号名称
- 将MSM8226切换为通用RPMPD_索引,以便删除重复的平台特定常量
- MSM8960 —— 新增两个额外的GSBI和I2C控制器。随后在三星Galaxy Express上启用加速度计、磁力计、NFC和光线/距离传感器
- Linux 7.0 Arm64内核配置更新
- 启用启动Kaanapali和Milos平台所需的驱动
- 启用各种基于高通的笔记本电脑上的EC驱动
- DMA引擎 —— 联发科天玑6300和9200控制器支持
- PHY —— 联发科MT8188 HDMI PHY
- SoC驱动
- 联发科MT8196 DVFS电源管理和邮箱支持
- 为MT8371 Genio 520 SoC添加socinfo条目
- 支持动态电压频率缩放资源控制器(DVFSRC)第4版,该版本见于全新的联发科Kompanio Ultra(MT8196)SoC
- 初始支持MT8196中的CMDQ邮箱
- 修复联发科SVS驱动调试操作中的内存泄漏
- 热控制
- 为联发科LVTS热驱动支持多种温度到原始值的转换函数,并添加MT8196和MT6991支持
- 为MT7987添加联发科LVTS驱动支持
- 内存控制器 —— 联发科SMI:修复错误路径和设备解绑期间旧的struct device引用泄漏
- DRM
- mtk_hdmi_v2:移除多余的分号
- 将DP训练移至热插拔线程
- 将c中的传统DRM日志转换为drm_*辅助函数
- mtk_dsi:新增高速(HS)模式支持
- 为联发科Genio 510/700/1200-EVK和Radxa NIO-12L板添加HDMI支持
- 邮箱
- 引入mtk-vcp-mailbox驱动和MT8196 VCP绑定
- 为MT8196扩展mtk-cmdq,添加GCE虚拟化、mminfra_offset和指令生成数据
- 蓝牙 —— 新增联发科MT7920支持
- ARM32更新 —— 无
- Linux 7.0 ARM64设备树更新
- MT7981b新增PCI-Express、USB、以太网和“GED”WiFi硬件卸载支持
- OpenWRT One板获得相同支持
- MT8188/8195/8390/8395新增DPI1接口支持,以及来自SoC HDMI Tx控制器的HDMI输出,连同其HDMI PHY和DDC IP,可在以下暴露HDMI连接器的开发板上使用:
- 所有基于MT8390 Genio EVK的板
- 所有基于MT8395 Genio EVK的板
- Radxa NIO-12L(MT8395)
- 修复多个联发科设备树的dtbs_check警告,包括MT6795、MT7981、MT7986、MT7988、MT8173、MT8183、MT8186、MT8188、MT8192,并修复Airoha EN7581-EVB的dts编码风格问题
- 修复新的设备树覆盖层警告,为所有至少有一个覆盖层的设备添加应用了覆盖层的dtbs
- 内核配置更新 —— 启用联发科HDMIv2驱动编译为模块
其他新增Arm硬件平台和SoC
- ASpeed —— Facebook/Meta Anacapa BMC(AST2600)、华擎机架ALTRAD8 BMC(AST2500)
- 英特尔 —— 英特尔Agilex 5 SoM(Agilex5模块化板)载板
- 美满电子(Marvell) —— Armada 7020载板(Marvell DB-98CX85x0)
- 微芯(Microchip) —— 32位Microchip LAN9668的PCB8385参考板
- NXP
- NXP i.MX8QP和MX952,是i.MX8QM和i.MX952的功能精简版本,CPU核心和I/O接口更少
- 基于NXP LS1028a、MX 8M Nano、i.MX 8M Plus、i.MX 91、i.MX 93和i.MX 95的多款开发板
- 基于NXP i.MX 8Q Plus的载板
- 瑞昱(Realtek) —— 基于Arm Cortex-A78核心的RTD1501s、RTD1861b和RTD1920s Kent系列SoC
- 因无相关开发板而移除的SoC:三星s3c6400、ST spear320s、ST stm32mp21xc/stm32mp23xc/stm32mp25xc、瑞萨r8a779m0/r8a779m2/r8a779m4/r8a779m6/r8a779m7/r8a779m8/r8a779mb/r9a07g044c1/r9a07g044l1/r9a07g054l1/r9a09g047e37以及德州仪器am3703/am3715
- 移除博通/Cavium/Marvell ThunderX2及其唯一支持的机器
树莓派特定变更
- 博通BCM2712 —— 启用RNG,添加看门狗
- 调节器 —— 将树莓派7英寸显示屏1的ATTINY基调节器标记为GPIO控制器,因为该硬件除了作为调节器外还具有GPIO控制器的功能。同时添加固定的gpio-cells
- 多媒体 —— i2c: ov5647
- 添加V4L2_CID_LINK_FREQUENCY和V4L2_CID_HBLANK控制
- 整理PIXEL_RATE控制和模式寄存器
- 对全分辨率、1080p和合并模式使用相同的PLL配置
- 分离通用寄存器
Linux 7.0 内核RISC-V架构更新
RISC-V架构也有大量变更和更新:
- 新增用户空间进程控制流完整性支持。内核新增对RISC-V Zicfiss和Zicfilp扩展的支持,用于在用户空间提供硬件辅助的控制流完整性跟踪。
- 改进向量寄存器相关的ptrace行为,并添加部分自测用例
- 优化strlen()汇编实现
- 内置ISO-8859-1代码页支持(与ARM64保持一致),用于EFI卷挂载
- 小幅清理代码,包括将copy_user_page()定义为copy_page()而非memcpy(),与其他架构保持一致;在riscv_iommu_init_check()中使用max3()简化表达式
- 平头哥(Alibaba T-Head) —— 通过允许重新配置CPU集群使用的PLL频率,支持T-HEAD TH1520的CPU频率缩放
- 全志 —— D1新增LED控制器和温度传感器支持
- 微芯(Microchip)
- 引脚控制(Pinctrl) —— 新增Microchip Polarfire MSSIO(RISC-V)引脚控制支持
- GPIO —— PolarFire SoC上的GPIO控制器支持多种类型的中断,需要两个中断单元
- CAN总线 —— 为MPFS添加CAN复位
- 时钟 —— 调整Polarfire驱动的Kconfig部分,因为该驱动现在已被非PolarFire设备使用
- 赛昉(SiFive) —— 中断 —— 修复sifive-plic驱动中的中断冻结bug
- 算能(Sophgo)
- PCIe控制器驱动 —— 在Sophgo 2044 PCIe根端口上禁用ASPM L0s和L1
- 设备树
- CV18xx —— 更新RX/TX FIFO大小以修复USB传输问题
- SG2042
- 优化DTS文件格式,包括将PLIC/CLINT节点移至cpu dtsi并按地址排序外设节点
- 为Pioneerbox启用RTC
- SG2044 —— 添加“b”ISA扩展以修复dtbs_check警告
- 算芯(SpacemiT)
- 新增支持RVA23配置文件的K3 8核(16核)RISC-V芯片
- 引脚控制(Pinctrl) —— 新增Spacemit K3(RISC-V)引脚控制支持
- 时钟 —— K3时钟驱动
- APBC —— UART、GPIO、PWM、SPI、TIMER、I2S、IR、DR、TSEN、IPC、CAN
- APBS —— 各种PPL时钟控制
- APMU —— CCI、CPU、CSI、ISP、LCD、USB、QSPI、DMA、VPU、GPU、DSI、PCIe、EMAC…
- DCIU —— SRAM、DMA、TCM
- MPMU —— 各种PLL1衍生时钟、UART、WATCHDOG、I2S
- 星闪(StarFive)
- 缓存 —— 修复starlink_cache_init()中的设备节点泄漏
- 看门狗 —— 修复探测错误路径中的PM引用泄漏
MIPS架构变更日志
与往常一样,MIPS架构的变更可以简单概括为“代码清理和bug修复”。以下是部分提交记录:
- 回滚“clk: microchip: core: allow driver to be compiled with COMPILE_TEST”
- 回滚“clk: microchip: fix typo in reference to a config option”
- MIPS: 实现ARCH_HAS_CC_CAN_LINK
- MIPS: rb532: 修复MMIO UART资源注册
- MIPS: 解决LLVM中gp用作全局寄存器变量时的bug
- MIPS: Loongson64: env: 使用LEFI时修复串口时钟频率
- MIPS: Loongson2ef: 使用pcibios_align_resource()阻止IO范围
- MIPS: Loongson2ef: 在早期阶段注册PCI控制器
- clk: microchip: 修复配置选项引用中的拼写错误
- MIPS: Loongson64: dts: 修复LS7A GMAC的phy相关定义
- clk: microchip: core: 允许使用COMPILE_TEST编译驱动
- MIPS: 删除未使用的h头文件
- watchdog: pic32-wdt: 更新include以使用platform_data中的h
- watchdog: pic32-dmt: 更新include以使用platform_data中的h
- serial: pic32_uart: 更新include以使用platform_data中的h
- rtc: pic32: 更新include以使用platform_data中的h
- pinctrl: pic32: 更新include以使用platform_data中的h
- mmc: sdhc-pic32: 更新include以使用platform_data中的h
- irqchip/irq-pic32-evic: 更新include以使用platform_data中的h
- clk: microchip: core: 更新include以使用platform_data中的h
你可以查看完整的Linux 7.0变更日志获取所有变更内容,该日志通过命令git log v6.19..v7.0-rc7 –stat生成,仅显示提交信息。你也可以阅读Kernelnewbies的总结,了解Linux 7.0的最新变更。












