Linux 5.19版本的主要变化:Arm、RISC-V和MIPS架构

原文链接:Linux 5.19 Release – Main changes, Arm, RISC-V and MIPS architectures 由Jean-Luc Aufranc撰写。
本文共计 3335 字,预计阅读 6 分钟

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-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 显示器进行测试
    • 新设备和电路板
  • 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网站上查看详细的摘要。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论