LWN:6.11合并窗口的剩余部分!

关注了就能看到更多这么棒的文章哦~

The rest of the 6.11 merge window

By Jonathan Corbet
July 29, 2024
Gemini-1.5-flash translation
https://lwn.net/Articles/982605/

6.11-rc1 版本的发布标志着 6.11 合并窗口于 7 月 28 日结束。当时有 12,102 个非合并变更集(non-merge changeset) 被合并进主线代码库(mainline repository) ;其中大约 8,000 个是在6.11 版本前半部分概览 文章编写之后提交的。这些变更集中包含了不少重要的改动;也有一项重大的更改最终未能合并进 6.11 版本。

在 6.11 版本合并窗口的后半段,合并进主线代码库的一些大家可能感兴趣的变更包括:

架构相关

  • 为 x86-64 系统新增了 AES-GCM 密码的实现。性能的提升总是受欢迎的,但这份贡献也值得关注的是对代码及其工作原理的详细文档;参见 此提交 以获取完整的代码。

  • 删除了对 PowerPC 40x 平台的支持。

  • 为 RISC-V 系统添加了内存热插拔支持。

  • 内核内存消毒器(KMSAN) (kernel memory sanitizer, KMSAN) 现在支持 s/390 系统。

  • RISC-V 系统获得了对 STACKLEAK 安全特性的支持。

内核核心

  • 新增了一个系统调用 uretprobe(),目前只在 x86-64 系统上实现。它的作用是优化对 uretprobes(动态插入到用户空间进程中的函数返回跟踪点)的处理;如果一个进程直接调用它,将不会带来任何好处。参见 此提交 以了解其工作原理,以及 此 LSFMM+BPF 报告 以获取更多关于激励它使用场景的信息。

  • 函数图跟踪器 (function-graph tracer) 的单用户限制已被移除。

  • 新的 reserve_mem= 命令行参数可以用来预留一块命名内存区域;它与新的 ramoops.mem_name= 参数结合使用,目的是与 pstore 子系统配合使用。参见 此提交 和 此提交 以获取详细信息。

  • 控制组内存控制器现在支持 swappiness= 参数。它允许主动回收算法设置匿名页面交换(回收匿名页面)和回收文件支持页面的平衡。参见 此提交 以获取详细信息。

  • 新增了一个 ioctl() 接口,用于访问 /proc/PID/maps 中的内存布局信息,从而实现更有效的访问。参见 此提交 以获取最简文档,此提交 以获取关于这项工作和它所解决的使用场景的详细描述,以及 此提交 以获取展示如何使用它的测试代码。

文件系统和块 I/O

  • Btrfs 文件系统识别 rescue= 挂载选项的几个新值 (ignoremetacsums 和 ignoresuperflags);它们旨在帮助恢复可能被用户空间工具部分转换的文件系统(特别是那些执行校验和转换的工具)。

  • Btrfs 执行块组回收的方式得到了改进,希望避免出现即使文件系统没有满,可用空间仍然不足的情况。参见 此提交 以获取关于新的动态回收阈值如何工作的描述。

  • ntfs3 文件系统获得了对文件 "compressed" 和 "immutable" 属性的支持。

硬件支持

  • 时钟: Amlogic C3 PLL 时钟控制器、Amlogic C3 外设时钟控制器、Qualcomm SM7150 显示时钟控制器、Qualcomm SM7150 摄像头时钟控制器、Qualcomm SM7150 视频时钟控制器、Qualcomm QCA8386 和 QCA8084 NSS 时钟控制器、Qualcomm QCM2290 图形时钟控制器、Sophgo SG2042 PLL 时钟控制器、以及 T-HEAD TH1520 AP 时钟控制器。

  • GPIO 和引脚控制: NXP IMX91 引脚控制单元、Nuvoton MA35 引脚和 GPIO 控制器、以及 Qualcomm SM4250 LPASS LPI 引脚控制器。

  • 图形: Lincoln Technologies lcd197 面板、Ilitek ILI9806E 基于的面板、以及 STMicroelectronics LVDS 显示接口发射器。

  • 工业 I/O: Analog Devices AD7194 和 AD7380 模数转换器、Vishay VEML6040 RGBW 光传感器、ScioSense ENS160 多气体传感器、Texas Instruments ADS1119 模数转换器、以及 MediaTek MT6359 PMIC 模数转换器。

  • 输入: Huion Inspiroy 2S 和 Dial 2 平板、XP-PEN Deco Mini 4 平板、以及 Cirrus Logic CS40L50 触觉驱动程序。

  • 媒体: Sony IMX283 图像传感器、Maxim MAX96717 GMSL2 序列化器、Maxim MAX96714 GMSL2 反序列化器、Imagination E5010 JPEG 编码器、GalaxyCore gc08a3 传感器、以及 Raspberry Pi PiSP 图像信号处理器。

  • 其他: Lenovo Yoga C630 嵌入式控制器、ChromeOS EC LED 控制器、Marvell 88PM886 电源管理 IC、Qualcomm PM8008 PMIC 调节器、ROHM BD96801 电源管理 IC、Texas Instruments LM3509 背光控制器、Silergy SY7802 闪光 LED 控制器、Texas Instruments LP5569 LED 控制器、Marvell Octeon 数据处理单元、KEBA CP500 系统 FPGA、MediaTek DVFSRC EMI 互连、Qualcomm MSM8953 互连、Marvel Octeon CN10K DMA 数据包接口、StarFive PCIe 主机控制器、Microchip LAN966x 出站中断控制器、Lenovo Yoga C630 电池控制器、Maxim MAX17201/MAX17205 电量计、Qualcomm CPUCP 邮箱控制器、以及 STMicroelectronics STM32 DMA3 控制器。

  • PHY: StarFive JH7110 D-PHY、Freescale i.MX8QM HSIO PHY、以及 Airoha PCIe-PHY。

  • 声音: Senarytech HD 音频编解码器、Realtek RT1320 编解码器、Everest Semi ES8311 编解码器、Qualcomm WCD9370/WCD9375 编解码器、Realtek rt1318 音频放大器、Cirrus Logic CS530x 模数转换器、Asahi Kasei AK4619 音频编解码器、以及 NXP LPC32XX 音频子系统。

  • USB: Lenovo Yoga C630 USCI 接口。

其他

  • perf 工具新增了若干功能;参见 此变更日志 (this changelog) 以获取完整列表。

  • 合并了一组小的 用于固件加载的 Rust 抽象 (Rust abstractions for firmware loading)。在使用 Rust 编写重要驱动程序之前,仍然需要先完成许多部分的工作,但这个列表正在慢慢缩小。其他合并的抽象包括 uaccess (用户空间访问)和 page (用于处理 struct page )。

  • 虽然构建内核代码所需的 Rust 最小版本仍然是 1.78.0,但现在也可以使用 1.79.0 或 1.80.0 版本。计划是随着时间的推移扩大适用的编译器版本的范围。

安全相关

  • 合并了 专用桶式 slab 分配器 (dedicated bucket slab allocator);它旨在提供针对堆喷射(heap-spraying)攻击的保护。

  • 新的 getrandom() 的 vDSO 实现 将大大加快随机数据的生成。不过,自该文章编写以来,实现方式略有改变;参见 此更新 (this update) 以获取详细信息。除此之外,这项工作还为 mmap() 添加了一个新的 MAP_DROPPABLE 标志,它请求内核在需要时可以丢弃的内存。

虚拟化和容器

  • 现在 KVM 中对 AMD 的 SEV-SNP 安全加密虚拟化机制提供了初步支持,它构建在合并窗口早期添加的体系结构级别支持之上。

  • 新增了一个 KVM ioctl() 调用,用于在虚拟机运行之前预填充其内存;参见 此提交 以获取文档。

内核内部更改

  • 构建内核所需的 GNU Make 最小版本已提升至 4.0。

  • 从 6.11 版本中删除了 118 个导出符号,并新增了 464 个符号,净增长 346 个;此外还有 6 个新的 kfuncs。参见 此页面 (this page) 以获取完整列表。

6 月 11 日,Linus Torvalds 宣布 可扩展调度程序类("sched_ext")将合并到 6.11 版本中。随后,出现了 关于此步骤是否合理,或者 sched_ext 是否需要更多工作的强烈讨论 。最终的结论似乎是,还需要至少一个开发周期来改进这个代码;sched_ext 最终没有被合并进 6.11 版本。不过,此后关于此代码已经进行了一些更具建设性的讨论,因此它最终似乎会合并进去。

与此同时,已经合并的工作将在接下来的七到八周内进行稳定。6.11 内核最有可能发布的日期是 9 月 15 日——正好赶上 6.11 版本合并窗口落在欧洲开源峰会、维护者峰会和 Linux 程序员大会上。但首先,需要进行大量的测试和 bug 修复。

(作为提醒,LWN 订阅者可以查看 LWN 内核源代码数据库 (LWN Kernel Source Database) 以获取有关 6.11 版本代码来源的更多详细信息)。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

75661b7c0b83210da82b9dc24173b58b.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值