关注了就能看到更多这么棒的文章哦~
6.0 Merge window, part 2
By Jonathan Corbet
August 15, 2022
DeepL assisted translation
https://lwn.net/Articles/904032/
Linus Torvalds 在 8 月 14 日发布了 6.0-rc1,关闭了合并窗口,时间跟预计的一样。那时已经有 13,543 个 non-merge 的改动进入 mainline 仓库了。其中有一半以上是在我们写完第一个 6.0 合并窗口的总结后拉出来的。合并窗口的后半部分往往更注重于 bug fix 而不是新功能,但在这段时间内仍然有许多有趣的改动。
在 6.0 合并窗口的后半段,最重要的变化有:
Architecture-specific
OpenRISC 和 LoongArch 架构都获得了对 PCI 总线的支持。
RISC-V 架构现在支持 "Zicbom "扩展,它提供了对具有非缓存一致性 DMA 的设备的管理。
Core kernel
runtime verification 子系统已经被合并了。这个子系统允许针对各种内核状态以及状态转换进行建模;如果内核在某个时刻没有遵循这个模型,那么就会得到提醒,甚至使系统 panic。其中一个例子是 WIP model,它可以确保 wakeup 事件不会在 preemption enable 的情况下发生。
DAMON 机制获得了一些新的功能,可以用来改变来自用户空间的内存管理。最重要的是 "LRU_SORT" module,可以重新排列 LRU list,使一些 page 能优先于其他 page。详情请见相关的 documentation commit。
支持创建新的 CXL 内存区域;该 commit 的 changelog 描述了基于 sysfs 的管理接口。
Filesystems and block I/O
内核支持了 NVMe in-band authentication
ext4 文件系统支持两个新的 ioctl() 操作:EXT4_IOC_GETFSUUID 和 EXT4_IC_SETFSUUID,它们可以用来获取或设置存储在文件系统 superblock 中的 UUID。
NFSv4 服务器现在会限制自己在系统中每 1GB 内存仅支持 1024 个活动 client。如果超过这个数字的话就会返回 temporary failure,并开始清理旧的、空闲的 client 客户端。
Hardware support
时钟:Microchip PolarFire 实时时钟、TI K3 实时时钟和 Nuvoton NCT3018Y 实时时钟。
GPIO and pin control:英特尔 Meteor Lake 引脚和 GPIO 控制器,瑞萨 RZ/V2M 引脚和 GPIO 控制器,瑞萨 R-Car V4H 引脚控制器,高通 8909 引脚控制器,全志 D1 引脚控制器,以及高通 SM6375 引脚控制器。
Input: Elan eKTH6915 i2c-hid 触摸屏。
Miscellaneous: Microchip SAMA7G5 OTP 控制器、Microchip Polarfire SPI FPGA 管理器、Qualcomm SPMI 轮流模数转换器、Qualcomm SM6350 互连器件、Freescale i.MX8MQ 互连器件、MediaTek PCIe 和 DisplayPort PHY、Meson G12A MIPI 模拟 DPHY、Freescale i. MX8qm LVDS PHY、微软 Surface 平板电脑模式开关、高通 SM8450 摄像头时钟控制器、高通 SM8350 图形时钟控制器、苹果音频 DMA 控制器、瑞萨 R-Car UFS 控制器、阿里巴巴弹性 RDMA 适配器、TI TPS380x 复位控制器、I2C 连接的 TPM 2.0 可信平台模块、博通 BCM63138 LED 控制器和 Mellanox BlueField 复位控制器。
Sound: 英伟达 Tegra210 输出处理引擎,英特尔 Meteor Lake 音频接口,高通 WSA8830/WSA8835 D 类放大器,德州仪器 TAS2780 单声道音频放大器,以及联发科 MT8186 音频接口。
USB: Aspeed USB2.0 设备控制器、Microchip PolarFire USB 控制器、Analogix ANX7411 Type-C DRP 端口控制器和 STMicroelectronics STM32G0 type-C PD 控制器。
Also: VME 总线子系统已经被移到了暂存目录(第二次),除非有人站出来维护它,否则将被完全删除。
Miscellaneous
Perf report 里面支持描述 lock contention 以及内核工作所用的时间;相关的 merge commit 里有描述(还包括很多其他的 Perf 改进)。后续 commit 里还带来了更多的 perf 增强功能。
Virtualization and containers
"guest vCPU stall detector" 是一个新增的伪设备,作用类似于 watchdog;虚拟机必须时不时地触碰它,否则 host 可以断定该机器已经 stall 住了。相关 commit 有更多的信息。
Internal kernel changes
CONFIG_ANDROID 配置选项已被删除,因为 "显然是个坏主意"。
新增 debugfs 接口,提供了大量关于已有的 memory shrinker 以及其性能信息。相关文档提交有详细介绍。
删除了使用 -O3 优化来构建内核的 config 选项。
当然,也有一些东西没能成功进入 mainline。printk() 的 pull request 被 Torvalds 严辞拒绝了,所以在这个周期内似乎根本不会有关于这个子系统的改动了。在 5.19 版本的 console-thread 功能被 revert 之后,该子系统经历了两个很困难的开发周期。同时,曾经感觉有希望能在 6.0 中合入 Rust 支持,但该代码目前看来还需要更广泛的 review。
还有几个重要的内存管理功能也曾被列入 6.0 的计划,但最终没有能合入。maple tree 数据结构越来越接近合入了,但对于 6.0 版本来说似乎还没有准备好。multi-generational LRU 功能最终成为了这个决定的附带牺牲品(也未合入)。根据 Andrew Morton 的说法,目前的计划是将这两组 patch 放入-mm 中,以便在 6.1 中合入。
不过,首先,社区必须把 6.0 内核发布出来;这意味着从现在到发布日期之间要找到并修复大量的 bug,发布几乎可以肯定是 10 月 2 日或 9 日的事情了。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~