Linus Torvalds不久前刚宣布了Linux 5.19的发布。我猜测这应该是最后一个 5.xx 版本,下一次再发布应该就是Linux 6.0了:
晚了一周,5.19 终于完成并且发布了。
完整的短日志(显然只是 rc8的,不是 5.19 的全部)如下所示,不过日志内没有什么真正有趣的东西,只是一些随机的小提示。
在 diffstat 中,loongarch 的更新倒还挺有意思的。另一批网络 sysctl READ_ONCE() 注释也是如此,它们可以让一些数据竞争检查器代码运行更顺畅。
除此之外,此次的更新实际上就是各种细节的更新了。
就我个人而言,最有趣的部分应该是我通过一台 arm64 笔记本电脑发布了 Linux5.19,这篇文章也是在这台电脑上编辑的。这是我梦寐以求的东西,而它终于现实了,十分感谢 Asahi 团队。很长一段时间以来,我们一直使用 arm64 硬件来运行 Linux,但它们都没有被真正用作开发平台,直到现在这台amr64笔记本电脑的出现。
这是我第三次使用 Apple 硬件进行 Linux 开发了。很多年前,我在一台 ppc970 机器上进行 powerpc 开发。
而十多年前,唯一真正的轻薄本的只有 Macbook Air。现在我终于可以 Apple 的硬件作为 arm64 平台了。
其实我并没有把它用于任何实际工作,我只是在上面进行测试构建和启动,还有最后的发布。但我正在努力确保下次旅行时,我可以只带着这台笔记本旅行。最后我也测试了一下自己的 arm64 端。
总之,不管这些,这显然意味着合并的窗口(*)之后就会打开。在对“次新开发内核”感到激动的同时,我们还是要先进行一次完整的测试。
—Linus
(*) 其实我可能会把这个版本称为 6.0,因为我有点担心再次被大版本的更新代号搞糊涂了。
Linux 5.18 是在两个多月前发布的,新增的改动实主要是:实现了更快的编译时间、切换到了 C11 标准、改进了 AMD Zen 上的进程调度性能、带来了 Btrfs 更新,以及其他许多改进和新功能。
图片描述:Linux-5.19-release-arm-risc-v-mips
Linux 5.19的一些显着变化包括:
- 网络:BIG TCP支持,数据包大小高达 4GB,适用于高速网络 (100Gbps+)
- 虚拟化和容器:支持 AMD 的安全嵌套分页和Intel的可信域扩展机制。有关后者,可以参考其文档提交
- 支持龙芯“LoongArch ”新CPU架构,该架构建立在MIPS之上,也 “有点像RISC-V”,最初是为中国处理器设计的。更多细节可以在提交信息中找到
- 对于怀旧者:支持x86上的out可执行格式,在5.1版本中被弃用,现在已经完全被移除
Linux 5.19 中的 Arm 变化
- 现在支持Arm Scalable Matrix Extension(仅在主机模式下,不适用于访客系统)
- Allwinner(全志)
- Allwinner F1C100s – SD/MMC、SPI、看门狗
- 时钟 – 更新Allwinner H6 RTC 时钟、Allwinner H616 32 kHz 时钟
- PHY – 增加Allwinner D-PHY Rx模式对MIPI CSI-2的支持
- 设备树 – 为Olimex TERES-I笔记本电脑增加GPIO端口调节器
- Rockchip(瑞芯微)
- Pinctrl – 适用于RK3588 的新驱动
- MMC 核心 – sdhci-of-dwcmshc:添加对 Rockchip rk3588 版本的支持
- PCIe 控制器驱动
- 搜索空闲出站区域时修复位图大小
- 设计软件驱动:
- 从rockchip-dwc DT“兼容”属性中删除“snps,dw-pcie”,因为它与rockchip不完全兼容(Peter Geis)
- 在探针处重置 rockchip-dwc 控制器 (Peter Geis)
- 添加 rockchip-dwc INTx 支持 (Peter Geis)
- 时钟驱动 – 从 txt 到 Yaml 的转换,用于许多 Rockchip 时钟绑定
- DRM – 添加在 Rockchip SoC 上发现的 VOP2 驱动,从RK3566/RK3568开始,在 RK3568-EVB上使用 HDMI 和 MIPI-DSI 显示器进行测试
- 新设备和电路板
- 基本支持搭载RK3568 SoC的Radxa ROCK3 Model A(增加了以太网、USB 2.0和耳机)
- 基本支持Firefly Station M2、Banana Pi BPI-R2 Pro和 RK3568-EVB1
- Amlogic(晶晨)
- ARM DT 更改 – 将 SPI NOR 节点名称与 dtschema 保持一致
- Linux 5.19 的 ARM64 DT 变化:
- DTS makefile alpsa 排序
- 将 SPI NOR 节点名称与 dtschema 保持一致
- 添加对 S4 电源域、gpio_intc、pinctrl 的支持
- 更新和修复JetHub D1/H1 开发板
- Samsung(三星)
- 为Exynos Auto V9SoC添加了时钟驱动
- Linux 5.19 的 DTS ARM 变化
- 一些与 DT 模式相关的更改,以使 DTB 通过模式检查:EHCI/OHCI/DMA/以太网节点名称、DMA 通道顺序、类似 USB 的兼容
- 向 Multi Core Timer 添加特定的兼容项,以允许更严格的 DT 模式匹配
- 清理已废弃的绑定关系
- 修复 S5PV210 Aries 板上的倒置 SPI CS(因此为空白面板)
- 更正 S5PV210 Aries 板上的蓝牙中断名称
- 清理:未使用和未记录的dma-channels和dma-request
- DTS ARM64 变化
- 向 Multi Core Timer 添加特定的兼容项,以允许更严格的 DT 模式匹配
- 清理
- 将电路板相关功能的别名移动到Exynos 850中的电路板
- 未使用和未记录的 dma-channels和dma-request
- Qualcomm(高通)
- Pinctrl – 支持 Qualcomm PMX65 和 PM6125,新的驱动用于高通SC7280 LPASS引脚控制
- 时钟驱动
- 用于Qualcomm SC7280 SoC 的 LPASS clk 驱动
- 用于Qualcomm SC8280XP SoC 的 GCC clk 驱动
- SSC(Snapdragon Sensor Core)的总线驱动,支持 RPMh 电源域和 soc-id 中的更多芯片
- IOMMU – ARM SMMU 驱动:添加新的 Qualcomm 设备树兼容字符串
- dmaengine – 支持 Qualcomm SM8350、SM8450 和 SC7280
- PCIe 控制器驱动程序 – 添加 SM8150 SoC DT 绑定和支持,修复管道时钟不平衡,以及许多其他小改动
- PHY – 添加了对 SM6350 的 Qualcomm UFS PHY 支持和对 SDX65 的 USB PHY 支持
- 高通 802.11ax WiFi (ath11k):
- 支持 QCA6390 和 WCN6855 的 WLAN 唤醒
- 支持设备恢复(固件重启)
- 支持为 WCN6855 设置比吸收率 (SAR)
- 从 SMBIOS 读取适用于 WCN6855/QCA6390 的国家/地区代码
- 在 WoWLAN 挂起期间启用保持活动状态
- 实现对“保留信道”功能的支持
- ARM64 DT 更新:
- MSM8974 DeviceTrees 的大变样:根据我们自该平台推出以来所了解的情况,对平台的风格、结构和命名进行统一
- Sony Rhine 平台获得了 I2C host、NFC 和 pstore 支持。Fairphone 2 获得了触摸屏支持
- SDX65 – 增加了保留内存节点、rpmpd、SPMI、CPU时钟、SDHCI控制器、SMMU和TCSR互斥。相关PMX65 PMIC的初始 DeviceTree
- MSM8226 – 获得 VADC 和 RTC 支持,添加了ASUS ZenWatch 2
- 适用于 Linux 5.19 的 Arm64 DT 更新:
- 在IPQ6018平台上添加 MDIO 总线描述
- MSM8916 – 增加BAM-DMUX WWAN网络设备,华为Ascend G7获得声卡定义和清晰的安装说明
- MSM8992 和 MSM8994 – 添加了多媒体时钟控制器、片上存储器、看门狗和各种清理更改。小米Mi 4C 获得了 CPU 调节器并修复了帧缓冲区定义,而华为 Nexus 6P 获得了 eMMC 支持
- MSM8996 – 添加调制解调器和传感器远程处理,并在 Dragonboard 820c 和小米设备中启用
- MSM8998 – 与传感器子系统总线相关的新时钟默认标记为受保护,并且 OnePlus 设备获得 NFC
- SC7180 – limozeen 转向使用 edp-panel 进行基于 EDID 的检测,而不是静态定义的面板
- SC7280 – 添加了 GPI DMA、WiFi remoteproc 和网络设备、LPASS 音频时钟、SDCC 控制器的复位以及新的 CRD 修订版。Herobrine 板获得 eDP 支持,IDP 获得背光。USB 被标记为能够唤醒
- SDM845 – 为小米 Pocophone F1启用 IPA、基于 WLED 的背光和第二个 WiFi 通道。在 RB3 上添加了 CAN 总线控制器,并定义了 WiFi 校准变量以允许将板的校准信息添加到 linux-firmware
- SM6350 – 添加了 I2C 总线、UFS 和 WiFi 支持
- SM7225(和Fairphone 4) – 启用 UFS、WiFi 和触觉
- SM8150 – PCIe、以太网和 uSD 卡已挂载,并已启用 SA8155p ADP 板。还添加了 PDC 中断控制器,并将其描述为 TLMM 的 wakup 中断父级
- SM8250 – 定义了相机子系统和控制接口,索尼 Xperia 1 II DTS 启用音频放大器
- SM8350 – 添加了 GPI DMA 引擎并将其链接到 I2C 和 SPI 串行引擎。Surface Duo 2 获得电池充电器支持
- SM8450 – 启用了两个 PCIe 控制器/PHY,添加了 GPI DMA 和 QUP 串行引擎实例。Remoteproc 实例在
- SM8450 HDK 上启用
- 默认配置更新
- Qualcomm 随机数生成器和硬件加密驱动
- DebugFS 支持
- 新设备和主板 – 8 台基于 Qualcomm Snapdragon 的机器,包括智能手表(ASUS ZenWatch 2)、Chromebook 主板和一些手机,例如小米 Poco F1 手机
- MediaTek(联发科)
- 添加了适用于 Chromebook 的Mediatek MT8195(Kompanio 1200) 高端消费芯片
- 时钟驱动 – MediaTek MT8186 SoC clk 支持
- 看门狗驱动
- 添加Mediatek MT8186 支持
- 添加了 Mediatek MT7986 复位控制器支持
- Pinctrl – 适用于Mediatek MT8195、Mediatek MT6795 Helio X10 的新驱动
- MFD – 为 MediaTek MT6359 添加了对 {Power,Home} 键的支持
- PCIe
- 修复 mtk_pcie_subsys_powerup() 中的引用计数泄漏
- Gen3 控制器驱动程序 – 在探测时重置 PHY 和 MAC
- 音频 – 适用于MediaTek MT8186 的 ASoC 驱动
- 稳压器——增加了对MediaTek MT6358 和 MT6366 的支持
- MediaTek WiFi (mt76)
- 支持无线以太网调度卸载以太网交换机和 WiFi 接口之间的数据包移动
- 非标准 VHT MCS10-11 支持
- MT7921 – 支持 AP 模式,IPv6 NS 卸载
- 其他新的 Arm 硬件平台和 SoC
- Arm – Arm的Corstone1000 通用平台,用于设计自定义SoC,目前的支持是针对它的固定虚拟平台仿真
- Broadcom(博通)
- 基于四核 Cortex-A7 和双 Wifi-6 的 BCM47622 宽带 SoC
- 两个基于 Broadcom BCM4708 的无线路由器
- NXP(恩智浦)
- 新增 I.MXRT1050 Cortex-M7 微控制器(无 MMU SoC)
- 30 个基于 NXP i.MX6、i.MX7 和 i.MX8 系列的新板,主要用于工业嵌入式市场,以及一个NXP LS1021A 物联网板
- Renesas(瑞萨电子)
- RZ/G2UL (R9A07G043) RZ/G2L通用 MPU 的单核版本
- RZ/V2M (R9A09G011) 智能相机SoC
- Renesas R-Car V4H (R8A779G0) 汽车芯片,具有 Cortex-A76 内核和深度学习加速
- STMicro – 7个STM32MP1 基板
RISC-V 更新
- Allwinner D1
- DMA 和 LRADC 驱动
- 实现基于页面的内存属性
- 设备树 – 启用带有两个混音器、一个 TCON TOP(带 DSI 和 HDMI)、一个 TCON LCD 和一个 TCON TV 的显示引擎 2.0
- 支持 Svpbmt 扩展,允许在页面中编码内存属性
- 支持通过 compat 子系统在 rv64 系统上运行 rv32 二进制文件
- 支持 kexec_file()
- 支持新的基于票据的自旋锁,这使得我们也可以转移到qrwlock。这些应该也已经通过asm-geneic树了
- 一些清理和修复,包括一些围绕原子和 XIP 的较大的清理和修复
小标题:Linux 5.19 中的 MIPS
Linux 5.19 的 MIPS 更新日志再简单不过了:
- 清理和修复
虽然列表提交中有更多细节(总共 38 个),但我通常不需要在这里提及:
- MIPS:RALINK: Define pci_remap_iospace under CONFIG_PCI_DRIVERS_GENERIC
- MIPS:在 CONFIG_NUMA 下使用memblock_add_node() in early_parse_mem()
- MIPS:如果 early_parse_mem() 中的 mem 参数为空,则返回 -EINVAL
- MIPS:Kconfig:修复缩进并添加 endif 注释
- MIPS:bmips:修复在 W=1 构建时观察到的编译器警告
- MIPS:用纯 C 语言重写“csum_tcpudp_nofold”
- mips: setup: 使用 strscpy 替换 strlcpy
- MIPS: Octeon: 添加 SNIC10E 板
- MIPS:Ingenic:为 CU1000-Neo 和 CU1830-Neo 刷新 defconfig
- MIPS:Ingenic:为Ingenic SoC和电路板刷新设备树
- MIPS:Ingenic:为 X1830 添加 PWM 节点
- MIPS:Octeon:修复评论中的错字
- MIPS:loongson32:Kconfig:删除多余的空间
- MIPS:Sibyte:删除不必要的返回变量
- MIPS:使用 NOKPROBE_SYMBOL() 代替 __kprobes 注释
- selftests/ftrace: 将kprobe_events保存到测试日志中
- MIPS:tools:无需将静态初始化为 0
- MIPS:Loongson:使用hwmon_device_register_with_groups()注册hwmon
- MIPS:VR41xx:丢弃冗余自旋锁初始化
- MIPS:smp:退出时flush_tlb_mm的优化
- ETC…
以上这些看起来确实都是微小的改动。随后他们也更新了 Loongson-3 的构建修复(修复编译 mips cpu_hwmon 作为模块构建错误)。
完整的Linux 5.19更新日志只有提交信息才能看到,我用git log v5.18…v5.19-rc8 –stat命令生成了它。另外,你们也可以在KernelNewbies网站上查看详细的摘要。

文章翻译者:Nicholas,技术支持工程师、瑞科慧联(RAK)高级工程师,深耕嵌入式开发技术、物联网行业多年,拥有丰富的行业经验和新颖独到的眼光!