LWN:5.19 合并窗口第一部分!
时间:2022-09-05 03:00:00
关注就能看到更多这么棒的文章~
5.19 Merge window, part 1
By Jonathan Corbet
May 27, 2022
DeepL assisted translation
https://lwn.net/Articles/896140/
写这篇文章时,针对 5.19 开发周期已经接近 4600 个 non-merge changeset 合入 mainline 仓库了。5.19 合并窗口进展良好。目前,合并的变化涵盖了许多领域,包括 kernel 核心、架构支持、网络、安全、虚拟化等。继续阅读,了解合并窗口的第一部分。
目前合并的有趣变化包括:
Architecture-specific
移除了若干 x86 特有的 boot option (nosep, nosmap, nosmep, noexec, and noclflush)。每个 option 都是用来关闭的 CPU 目前不再需要关闭相应的功能之一
彻底移除了 x86 上的 a.out 支持可执行格式,以前是 5.1 的时候已经 deprecated 了。
x86 split-lock detection 机制得到了强化。不再仅仅是对进程使用 split lock 时给出 warning (缺乏行为),并将尽可能减缓相应过程的执行。这可以确保系统的正常性能,也许可以获得相应的应用程序 fix 了。
新增的 Intel “in-field scan” 该机制可以在正式部署的系统中检测和发现 CPU 问题。相应的文档 commit 里面有更多的信息。
xtenda 架构支持更多的功能,包括 SMP coprocessors, KCSAN, hibernation 等等。
m68k 建筑实现了一个基础 android Goldfish 虚拟机模拟器。
Arm 支持了 Scalable Matrix Extension (只支持 host mode,guest 系统不支持)
Core kernel
对 io_uring 子系统进行了一些改进。新增了 IORING_RECVSEND_POLL_FIRST flag,如果设置在网络操作中,操作将直接进入 polling 模式,而不是试图先传输。这样,当调用者不需要立即进行此操作时,可以节省一些费用。还增加了一些 flag 来减轻 fixed file descriptors 管理工作。accept() 支持了 "multi-shot" 模式允许在一次操作中 accept 多个连接。修改文件扩展属性的一些新操作。支持了 socket() 系统调用。最后,支持 "passthrough" 可以操作 NVMe 命令直接发送给设备。
所有这些新的 API 没有文档。可以在 BPF maps 中存放 typed 指针。相应的 merge commit 细节更多。不要跟随这个功能。dynamic BPF pointers混在一起,后者也会包括在内 5.19 请参考相关内容 merge commit。
Filesystems and block I/O
EROFS 大量的重构只读文件系统来利用它 fscache 机制。实测可以显著改善那些基于许多操作的操作 EROFS 映像文件的 container 容器的系统性能。 merge 更多介绍描述。
EROFS 额外的工作 fscache 添加了一个 on-demand mode,参看相关 commit
Hardware support
硬件监测。Aquacomputer Octo 温度传感器和风扇控制器,Aquacomputer Farbwerk 360 温度传感器,Infineon XDPE152 电压调节器,Microchip LAN9668 温度传感器,以及 Nuvoton NCT6775F I2C 接口。
杂项。Nvidia SN2201 平台开关,Silicon Mitus SM5703 电压调节器,以及联发科 SPI NAND 闪存接口。
网络。Marvell Octeon PCI 终端网卡,CTU CAN-FD IP 核(见文档),Analog Devices 工业以太网 T1L PHY,pureLiFi LiFi 无线 USB 适配器,联发科 PCIe 5G WWAN modem T7xx 适配器,德州仪器 DP83TD510 以太网 10Base-T1L PHY,Sunplus 双 10M/100M 以太网适配器,以及 Realtek 8852CE PCI 无线网络(Wi-Fi 6E)适配器。
此外,一些旧的网络驱动程序已经被删除,因为它们没有被维护,估计也没有被使用。
此外,电源管理子系统支持那些 "artificial" power scale 操作设备。简而言之,这意味着该设备提供了关于不同功率状态的相应效率的信息,但这些信息现实世界的标准。相应的文件提交包含了更多的信息。
Networking
BIG TCP patch set 该工作已被合并,允许在数据中心网络上发送巨大的信息 IPv6/TCP 数据包。
继续添加 packet-drop 原因标记使管理员更容易理解为什么网络数据包不能通过系统。
multipath TCP(MPTCP)现在协议可以在某些协议中使用 multipath 退回常规功能 TCP。
新增一个用户空间 API 用于管理 MPTCP flow。文档不多,但这次 merge commit 有一个介绍。
Security-related
各种保密计算(confidential-computing)机制允许将机密数据推入虚拟机,不暴露给虚拟机 host 系统 EFI 现在子系统可以通过了 securityfs 下一个目录(security/coco)暴露这些机密信息 guest。commit 相关文件给出了更多信息。
kernel 的 lockdown 该模式可以防止特权过程改变内核控制以外的内存。或者,至少这是它最初的目的。事实证明,只要启动内核调试器(kernel debugger)很容易绕过 lockdown 机制。有一个 commit 合入了 mainline(当然也适用 stable update),填补这个漏洞。
为了提高鲁棒的性能,对随机数生成器进行了一些改进。 merge commit 包括概述。
支持了 structure randomizaiton hardening 加固,依赖 Clang 编译器第 15 版
Landlock security module 现在支持重命名文件。
Integrity Measurement Architecture (IMA) 现在可以用了 fs-verity 验证文件摘要值。
"unprivileged BPF "含义发生了一些变化。禁用于当前内核 unprivileged BPF 会使得所有 bpf() 不能使用系统调用命令。而在 5.19 中,非特权进程将可以访问那些实际上不会创建 object 的命令。这使得有特权的过程可以加载 BPF 程序,无特权的过程可以与之互动。merge commit 更多信息。
Virtualization and containers
支持 AMD 的 Secure Nested Paging 功能。简而言之,当虚拟机从外部访问中获得加密内存时,该功能将通知虚拟机。这种机制的用途之一是挫折重放攻击(replay attack)。
支持英特尔可信域扩展(TDX, Trusted Domain Extensions)该机制的支持提供了一些类似的功能。更多信息请参阅文档提交。
Internal kernel changes
Objtool 它是内核构建系统的一部分,用于对待 object 文件进行了一些转换,其界面被完全重构。 commit 概述了相关的变化,还有一个文档 commit 提供了 objtool 提供了一些功能。
继续向 memory folios 迁移。有一个 pull request 将某些地址空间的操作转换为新的(类似的)操作。
SLUB 内存分配器的调试基础设施得到了改进;有关更多信息,请参阅文件。
将打印内核信息转移到 per-console 的 thread(LWN 2019 年文中有描述)的工作终于合并了。这应该可以避免那些缓慢的工作 console 阻止日志记录或延迟系统。printk()的 indexing 该功能也被记录在文档中。
5.19 并窗口刚刚开始;可以预计它将一直开放到 6 月 5 日。窗口关闭的时候 LWN 会对后半部分的内容进行总结,敬请关注。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~