关注了就能看到更多这么棒的文章哦~
The conclusion of the 5.14 merge window
By Jonathan Corbet
July 12, 2021
DeepL assisted translation
https://lwn.net/Articles/861695/
7 月 11 日,5.14 合并窗口随着 5.14-rc1 的发布而正式结束了。当时已经有约 12,981 个 non-merge changeset 被合入了 mainline;其中将近 8,000 个是在 LWN 5.14 合并窗口的第一部分总结之后进入 mainline 的。因此,这个合并窗口中的 commit 数量比上一个要少。在 5.13-rc1 发布之前,已经有了 14231 个 changeset。看了一下,这次仍然有很多有趣的工作成果合入了内核。
在 5.14 合并窗口的后半部分,有如下这些比较重要的改动:
Architecture-specific
s390 架构启动现在支持了采用 Zstandard(zstd)算法压缩的内核。
RISC-V 架构支持了 transparent huge page,并支持 KFENCE memory-safety checker。
Core kernel
control-group kill button patch 已被合并。此功能支持对 cgroup.kill 这个虚拟控制文件来快速地杀死 cgroup 中的所有成员。
madvise() 系统调用有了两个新的选项:
这两者都是为了能够马上完成这个区域内的所有 page fault 的开销,这样一来应用程序在后续运行中就不会由于 page fault 导致额外延迟了。它们与 mmap()的 MAP_POPULATE 选项并不一样,因为可以在任何时候被调用,而不仅仅是在内存映射创建的时候。更多信息请参见相关 commit。
MADV_POPULATE_READ ,触发 page fault 来对指定 mapping 中的所有页面进行读取操作。其效果与调用者自己循环来访问该范围中的每个页面的效果相同。这个操作不会破坏 COW mapping。
MADV_POPULATE_WRITE 则正相反,会 fault 进行这些 page 的 write 操作,有需要的话会破坏 COW mapping。
合入了 memfd_secret() 系统调用代码。它用来创建一个对调用者来说私有的内存区域;甚至内核也不能直接访问这个区域。更多信息请参见相关 commit。
Filesystem and block I/O
ext4 文件系统支持了一个新的 ioctl() 类型,即 EXT4_IOC_CHECKPOINT。这个命令会强制所有待处理的 transaction 从日志中完全执行完毕,也会把存储设备上日志所在的位置覆写掉。这个操作是为了防止文件系统信息泄露的众多努力中的一部分。相关的 documentation commit 描述了这个新的操作及其选项。
增加了 quotactl_fd() 系统调用。这是 quotactl_path() 的新形式,在 5.13 中曾短暂加入,后来由于 API 问题而被暂时禁用了。
F2FS 文件系统现在可以压缩使用了 mmap() 映射的文件。还有一个新的 nocompress_extension 挂载选项,可以禁止对任何名称符合指定的文件扩展名的文件进行压缩。
Hardware support
Clock。高通 MDM9607 全局时钟控制器、高通 SM6125 全局时钟控制器、高通 SM8250 摄像头时钟控制器、瑞萨 RZ/G2L 系列时钟控制器、TI LMK04832 JESD204B 时钟抖动净化器、Ingenic JZ4760 时钟控制器和华为 Hi3559A 时钟。
Graphics。ITE IT66121 HDMI 桥接器,ChromeOS EC ANX7688 桥接器,Hyper-V 合成视频设备,以及 TI SN65DSI83 和 SN65DSI84 DSI 到 LVDS 桥接器。还有一个新的 "simpledrm" 驱动程序,为简单的 framebuffer 设备提供 direct-rendering 接口;还有不可避免的 200,000 多行新的 amdgpu 寄存器定义。
Industrial I/O。TI TMP117 数字温度传感器、TI TSC2046 模数转换器、TAOS TSL2591 环境光传感器、Murata SCA3300 三轴加速计、Sensirion SPS30 颗粒物传感器、STMicroelectronics LSM9DS0 惯性传感器、NXP FXLS8962AF/FXLS8964AF 加速计和 Intel quadrature encoder。
Miscellaneous。Microchip 48L640 EERAM 芯片,PrimeCell SMC PL351 和 PL353 NAND 控制器,SparkFun Qwiic 操纵杆,Richtek RT4831 背光电源控制器,Qualcomm PM8008 电源管理器件。Xillybus 用于 USB 的通用 FPGA 接口,Qualcomm SC7280 互连,通用 CAN 收发器,Rockchip Innosilicon MIPI CSI PHYs,Allwinner SUN6I hardware spinlock,以及 MStar MSC313e 看门狗。
Pin control。联发科 MT8365 引脚控制器,高通 SM6125 引脚控制器,以及 IDT 79RC3243X GPIO 控制器。
Sound。恩智浦/Goodix TFA989X(TFA1)放大器,Rockchip RK817 音频编解码器,以及高通 WCD9380/WCD9385 编解码器。
Removals:提供对/dev/raw 下的 block device 的 unbuffered access 的 "raw "驱动已经被移除。依赖它的所有应用程序早就迁移到了 O_DIRECT,或者至少人们是这样认为的。
Virtualization and containers
User-mode Linux 现在利用一个新的 PCI-over-virtio 驱动支持了 PCI 驱动。
Testing and tracing
kunit self-test 子系统现在支持在 QEMU 下运行测试了,详见相关的文档提交。
5.14 中新增了两个 tracing 机制。osnoise" tracer 会跟踪由内核活动(例如中断处理之类的)引起的应用程序延迟。timerlat tracer 则对基于 timer 的唤醒事件的延迟提供了详细信息。osnoise 和 timerlat 的相关 commit 中有更多关于使用的细节和说明。
5.14 内核现在正处于稳定阶段。除非有极不寻常的事情发生,否则最终的 5.14 版本将在 8 月 29 日或 9 月 5 日发布。在此期间还有大量的测试和错误修复工作要做。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~