关注了就能看到更多这么棒的文章哦~
The first half of the 5.17 merge window
By Jonathan Corbet
January 13, 2022
DeepL assisted translation
https://lwn.net/Articles/880909/
目前为止,有将近 7000 个 non-merge commit 已经合入了 mainline,将会包含在下一个 5.17 版本的内核之中。这些已经合入的改动为整个内核增加了新的功能,请看如下介绍来了解 5.17 合并窗口前半段的内容摘要。
Architecture-specific
arm64 架构支持了 KCSAN (kernel concurrency sanitizer)。
32 位 Arm 系统支持了 KFENCE。
开机时的 memtest 内存检测功能可以在 m68k 架构上使用了。
新增 "AMD P-State "子系统,这是一种用于即将面世的 AMD 处理器的电源控制机制,据说它能提供显著提升的性能。更多信息请参见此文档提交(https://git.kernel.org/linus/c22760885fd6)。
Core kernel
新提供了 bpf_loop() 这个 helper。它是在 BPF 程序中实现(一些)循环的另一种方式。可以提高性能并让 loop 循环可以更容易通过 BPF verifier 的检查。
以前在用户空间实现的 "一次编译/到处运行"(CO-RE, compile once/run everywhere)机制,现在在内核中也可以运行了。这是朝着最终实现 signed BPF program 所迈出的一步,也会使 BPF 功能更容易被 Go 等语言使用。
scheduler 也会跟踪记录 forced-idle 时间了。这是由于 core-scheduling 机制导致的 SMT sibling 处理器被强制放到 idle 状态的时间。这个信息可以用来评估在打开 core-scheduling 机制后会带来多大的额外开销,它可以从 /proc/PID/sched 中获取到。
RCU_FAST_NO_HZ config 选项被删除了,它是为了在 tickless CPU 上对 RCU 算法进行一些更深入的微调使用的。似乎没有发现真的有人使用这一功能。
Filesystems and block I/O
ID-mapped filesystem 现在可以在本身就是 ID-mapped 的文件系统之上再进行 mount 了。相关的 merge commit 里面有更多信息。
Hardware support
Graphics:direct rendering 子系统已经支持了 electronic privacy screen,很多笔记本电脑上都有这个功能。另外添加了 JDI R63452 全高清 DSI 面板、Ilitek ILI9163 显示面板、Novatek NT35950 DSI 面板、Boe BF060Y8M-AJ0 面板、Sony Tulip Truly NT35521 面板,以及 R-Car DU MIPI DSI 编码器。
Hardware monitoring。德州仪器 INA238 电源监控器,华硕 WMI B550/X570 和 X370/X470/B450/X399 硬件监控接口,台达 AHE-50DC 风扇控制模块,瑞萨 RZ/G2L 热传感器,MPS MP5023 硬件监控接口,以及 NZXT 风扇控制器。
Media。意法半导体 STM32 Chrom-Art 加速器,Maxim MAX96712 四路 GMSL2 deserializers,OmniVision OV5693 传感器,以及支持 VP9 的各种编解码器。
Miscellaneous。苹果 PMGR 电源状态控制器、R-Car Gen4 系统控制器、三星 Exynos 通用串行接口、StarFive JH7100 时钟发生器、StarFive JH7100 复位控制器、Marvell CN10K 性能监测单元、HiSilicon PCIe 性能监测单元、Marvell CN10K 随机数发生器。Letsketch WP9620N 平板电脑、Maxim MAX77976 电池充电器、联想 Yoga Book 平板电脑、西门子 Simatic LED 控制器、西门子 Simatic IPC 看门狗、华硕 TF103C 二合一键盘底座、瑞萨 R-Car Gen3 和 RZ/N1 NAND 控制器、TI TPS68470 PMIC 稳压器、Maxim MAX20086-MAX20089 相机电源保护器。
Networking。Engleder TSN endpoint 以太网 MAC,Microchip Lan966x 网络交换机,Vertexcom MSE102x SPI 接口,以及 Mellanox Spectrum-4 以太网交换机。
Pin control。高通公司 SDX65 和 SM8450 引脚控制器、StarFive JH7100 引脚控制器、NXP IMXRT1050 引脚控制器和英特尔 Thunder Bay 引脚控制器。
Networking
增加了 reference-count tracking infrastructure (引用计数跟踪相关的基础设施)。这个机制应该能帮助开发者追查到引用计数相关的错误具体来源。目前,它只是针对网络子系统的,但应该可以比较容易地移植到内核的其他部分。
新增 "converged security and management engine" module 允许通过 WiFi 与英特尔管理引擎(位于英特尔 CPU 中的一个独立处理器)来进行通信。
可以支持将流量控制相关动作(traffic-control actions)也 offload 给网络设备来完成的功能。具体信息可以在 commit 中看到。
管理组件传输协议(MCTP, management component transport protocol)现在支持通过串行设备了。基于 SMBus 的 MCTP 功能也被合入了,但随后由于 I2C 维护者抱怨这些 I2C core 相关改动没有把他加进来,因此被 revert 了。
Security-related
内核的随机数生成器已经从 SHA1 哈希算法切换到 BLAKE2s,这样既快又安全。
Virtualization and containers
用户模式 Linux 现在可以用 devicetree blob 来启动了,这样便于测试驱动代码。
Xen USB 虚拟 host 驱动程序允许将对 USB 设备的访问传递给 Xen guest。
Internal kernel changes
slab 分配器使用的 struct page 内容已经被移到一个单独的结构中去了。之前 LWN 介绍过这项工作的早期版本。后来 Vlastimil Babka 又进一步推动了后续实现。
KCSAN 已经检测出一些缺失的 memory barrier 了。更多的信息可以从文档 commit 中找到。
新的 gpio-sim 模块创建了用于测试目的的模拟 GPIO 芯片。更多信息请参见相关 commit。
内核现在使用 -Wcast-function-type 编译选项来 build,这样当函数指针被转换为不兼容的类型时会产生一个 warning。这种检查是为了避免触发 control-flow integrity alarm 所必须要做的。
目前在 linux-next 中大约有 4000 个 changeset,这表明在合并窗口的剩余时间里会有比较少的改动了。当然毫无疑问还是有一些吸引注意力的改动等待合入 mainline,这一切需要在 1 月 23 日合并窗口关闭前完成。请继续关注我们下半部分的总结,应该就在这个日子之后不久。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~