关注了就能看到更多这么棒的文章哦~
The first half of the 6.10 merge window
By Jonathan Corbet
May 16, 2024
Gemini-1.5-flash translation
https://lwn.net/Articles/973687/
6.10 内核版本的合并窗口于 5 月 12 日开启;截至本文撰写之时,已有 6819 个非合并提交被拉入该版本的 mainline 内核。笔者抽空从 LSFMM+BPF 中抽身出来,试图跟上这波提交浪潮。以下内容将概述 6.10 合并窗口初期被拉入的一些重要变化。
架构特定
一些早期 Alpha 处理器 (EV5 及更早版本) 的支持已被移除。如 合并信息 中所述,这些是内核支持的唯一不支持字节级内存访问的机器,这在整个内核的支持方面带来了额外的复杂性。这也是内核移植支持的第一个非 x86 架构。Linus Torvalds 修改了合并信息,补充了如下内容:
我非常喜爱早期的 alpha,但缺乏字节和字操作(byte and word operation)是一个严重的错误,它让一切都变得更糟糕 - 包括由此产生的疯狂的 I/O 变种。
这当然不是架构的唯一错误,但它是首要问题。
因此,虽然看到对我的第一个 alpha 设备的支持消失感到有些悲伤,但如果你想运行博物馆级别的硬件,你也许应该使用博物馆级别的内核。
x32 子架构现在支持 shadow stacks。
Arm64 系统获得了对 userfaultfd() 写保护功能 的支持。
增加了一个针对 32 位 ARCv2 处理器的 BPF 实时编译器(just-in-time compiler)。
内核核心
内核中已添加用于时间处理的 Rust 抽象。这项工作在 2023 年初已 讨论过,现在终于被纳入;参见 此提交 查看该接口的当前形式。
BPF 程序现在能够在内核中使用等待队列;参见 此合并信息 了解更多信息。BPF 程序现在也能够 禁用和启用抢占。
文件系统和块 I/O
新的
F_DUPFD_QUERY
操作(用于 fcntl())允许进程检查两个文件描述符是否引用了同一个底层文件。此功能也由 kcmp() 提供,但是采用了更受限制的形式,从内核中泄露的信息更少,因此即使在禁用kcmp()
的系统上也应该可用。块限速(block-throttling)机制的下限(在
Kconfig
文件中 描述 为 "对 cgroups 优先级进行最佳努力的限制")已被删除。它在 2017 年被引入时被标记为 "实验性",似乎没有获得用户,并且使块层的维护变得复杂。EROFS 文件系统现在支持 Zstandard 压缩。
dm-crypt 设备映射器目标有一个新的
high_priority
选项,它允许为其处理工作使用高优先级工作队列。此选项可以提高大型系统上的性能,但默认为 "off",以避免在小型系统上为其他工作负载(例如音频处理)引入延迟问题。
硬件支持
GPIO 和引脚控制: 使用 SCMI 消息协议的引脚控制器和 Intel Granite Rapids-D vGPIO 控制器。
图形: Samsung S6E3FA7 面板,ARM Mali CSF 架构的 GPU,LG SW43408 面板,Raydium RM69380 架构的 DSI 面板以及 Microchip LVDS 串行器。
硬件监控: Analog Devices ADP1050 电源控制器,Lenovo ThinkStation EC 传感器以及 Infineon XDP710 热插拔控制器。
输入: WinWing Orion2 节流阀。
此外: 用于 HID 驱动程序的 BPF 框架 2 最终开始得到一些应用,内核树中添加了一些小的修复程序,第一个修复程序 用于 XPPen Artist 24 设备。一些 新的 udev 功能 用于根据需要加载这些程序。
其他: STMicroelectronics STM32 防火墙框架控制器,Arm Trusted Services 安全分区,NXP DCP 密钥存储设备,NVIDIA Tegra 安全引擎以及 Airoha SPI NAND 闪存接口。
网络: Airoha EN8811H 2.5 千兆 PHY,Realtek 8922AE PCI 无线网络(Wi-Fi 7)适配器,Realtek 8723CS SDIO 无线网络适配器,TI 千兆 PRU SR1.0 以太网适配器,Microsemi PD692x0 I2C 供电设备控制器,TI TPS23881 I2C 供电设备控制器,Renesas RZ/N1 以太网控制器以及 Intel HCI PCIe 蓝牙控制器。
声音: Rockchip RK3308 音频编解码器以及 Texas Instruments PCM6240 系列音频芯片。
其他
与内核代码一起使用的 Rust 语言版本已升级到 1.78.0。除了其他更改之外,此更改使得可以放弃内核中维护的
alloc
crate 的特有版本,从而删除了大约 10,000 行代码。还进行了一些其他更改;有关完整列表,请参见 此合并消息 和 此提交。
网络
使用 io_uring 进行零拷贝发送操作的性能已显着提高。现在还可以将多个缓冲区 "捆绑" 用于发送和接收操作,从而再次提高性能。
通过
SCM_RIGHTS
消息在 Unix 域套接字上发送文件描述符长期以来一直容易出现引用计数循环问题;这篇文章 描述了 2019 年这个问题及其解决尝试。为 6.10 重新设计了相关的垃圾收集代码,从而得到了一个更简单、更健壮的解决方案;此合并消息 提供了一些更多信息。现在对设置 数据包转发控制协议 (PFCP) 过滤器提供了基本支持,尽管大部分工作必须在用户空间完成,并且只支持 IPv4。
TCP 套接字现在支持
SO_PEEK_OFF
套接字选项,与 Unix 域套接字相同。这允许指定一个偏移量,在使用MSG_PEEK
查看数据时使用。
安全相关
内核现在支持与可信平台模块 (TPM) 设备的加密交互;此文档提交 提供了更多信息。
"加密使用统计信息" 功能(似乎未被使用)已从内核中删除。有关此删除的详细理由,请参见 此提交。
BPF 程序现在可以访问内核的加密框架。
预计 6.10 合并窗口将保持开放,直到 5 月 26 日。合并窗口关闭后,LWN 将重新提供本合并窗口后半部分中合并到主线内容的摘要。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~