关注了就能看到更多这么棒的文章哦~
The first half of the 6.1 merge window
By Jonathan Corbet
October 7, 2022
DeepL assisted translation
https://lwn.net/Articles/910312/
6.1 合并窗口正在顺利进行中:自从窗口打开以来,已经有 5,752 个 non-merge changeset 合入了 mainline 线仓库。大约是堆积在 linux-next 中的工作的一半,这也意味着是时候来看看到目前为止已经合并了些什么内容。一些期待已久的核心改动已经出现在下一个内核版本中了,但可能会有更多的重大改动还会出现。
到目前为止,已经合并的有趣的变化如下:
BPF
增加了创建 destructive BPF program 的功能。最初提案中包括了一个 panic() 函数,但最终合并的是 crash_kexec() kfunc 这个替代方案。这是一个底层入口,不去做 panic() 试图会做的那些清理工作。
BPF 支持在 cgroup 中进行遍历了。这个功能还没有文档,可以先看看相关 commit 来了解一些信息。
针对 BPF 的内存分配器,已经被合并了。
新增了一个 "user ring buffer" BPF map type,用于在 BPF program 和用户空间之间快速传输数据。文档很少,但 merge message 中有 overview 信息。
BPF task iterator 现在可以遍历一个 thread 的资源了;相关的 merge message 是唯一对此进行描述的文档。
Core kernel
对 Rust 编程语言的实验性支持已被合入 mainline。根据最近结束的内核维护者峰会上的决定,合入的是一个最小版本的 patch set,没有迄今为止已经在 Rust 中实现了的驱动。相关的 documentation commit 中包含了更多的信息,也有一些小的 sample module 可用了。
对 a.out 可执行格式的支持在 5.18 版本中被禁用了。一直没有人抱怨过,所以现在相关支持已经从内核中完全移除。
Filesystems and block I/O
erofs 文件系统已经获得了跨文件系统来共享重复数据的功能
statx()系统调用现在可以返回信息来说明此文件是否可以支持 direct I/O,如果可以的话,相关的 alignment 要求是什么。man-page 的改动中描述了新 API,此外还可以在 changelog 中找到一些信息。
Hardware support
Graphics:联发科 mt8195 DisplayPort units。
Hardware monitoring:Microchip EMC2305 和兼容的 EMC2301/2/3 风扇控制器,Analog Devices MAX31760 风扇速度控制器,以及 TEXAS tps546d24 buck converter。
杂项。Microchip PCI1XXXX 的 I2C 接口、联发科 MT6331 和 MT6332 电源管理 IC、Nuvoton NCT6116 GPIO 控制器、AMD 平台管理框架、联发科 MT6370 背光控制器、Broadcom STB 内存控制器和阿里巴巴 T-Head Yitian 710 DDR 子系统 Driveway 性能监测单元。
Networking:Wangxun GbE PCI Express 适配器,Microsemi Ocelot 控制器,以及 Analog Devices ADIN1110 MAC-PHYs。
Sound:德州仪器 SRC4XXX DIR/DIT 和 SRC 编解码器,Everest Semi ES8326 编解码器,恩智浦 i.MX8ULP 数字信号处理器,苹果 Silicon MCA 音频子系统,以及英特尔 SkyLake 和 KabyLake 音频处理器。
一些用于在 BPF 中创建 human input device(HID)驱动程序的支持 patch 已被合并,但完整的机制看来还得等到下一个发布周期。
Miscellaneous
内核 Documentation tree 的 top-level 内容已被大幅重写,从而简化寻找有用信息的过程,尤其是针对使用网络浏览器的场景。目前的效果可以在 linux-next 中看到,并将在 6.1-rc1 之后出现在最终生成的 mainline 文档中。
Networking
移除了内核中对古老的 DECnet 协议的支持。用户空间的 API 定义仍然存在,因此支持 DECnet 的程序可以继续成功编译,但它们永远不会找到一个正常的 DECnet 网络了。
netlink 协议终于在内核源代码中被记录下来了。该手册的 HTML 版本可以在 kernel.org 上找到。
TCP 协议栈现在可以为 socket 使用一个单独的、per-namespace 的哈希表,从而提高了具有大量的繁忙网络 namespace 的系统的性能。这个表默认是禁用的;相关的 commit 中描述了如何配置。
Security-related
基于 LLVM 的内核控制流程完整性机制(control-flow-integrity),之前是在 5.13 版本中被合并的,现在被一个新的实现所取代了,因为更适合内核的需求。
新增了一个 secure-module hook 来控制创建用户 namespace 的能力;尽管 namespace 维护者强烈反对(讨论正在进行中),这个功能还是被合并了。
增加了在 BPF 程序中执行 PKCS#7 签名验证的支持。文档显然已被推后到下一个开发周期了,但这个 merge message 中概述了这个特性存在的原因,以及它的工作原理。
Internal kernel changes
Thermal 相关的 devicetree 初始化的 API 有了很大的改动,驱动也已经更新从而能适应这个改动。新的 API 完全没有文档记录,但在相关 commit 中可以了解到一些信息。
截至目前,还有许多重要的 git 仓库尚未被合入 mainline,所以几乎可以肯定地说还有一些大的改动在等待合入。在合并窗口关闭后(几乎确定是在 10 月 16 日),我们将继续关注后半部分的修改总结。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~