LWN:7.0 合并窗口的后半部分

📅 发布时间:2026/7/9 14:52:53 👁️ 浏览次数:
LWN:7.0 合并窗口的后半部分
关注了就能看到更多这么棒的文章哦Daroc AldenGemini translation原文链接https://lwn.net/Articles/1058664/7.0 合并窗口于 2 月 22 日 关闭总计包含 11,588 个非合并变更集non-merge changeset其中 3,893 个是在 介绍合并窗口前半部分的文章 发布之后进入主线mainline的。后半部分的改动大多集中在错误修复而非新特性上这符合惯例。然而其中仍有一些令人惊喜的改动比如针对rtl8723bs驱动来自不同开发者的 89 个独立的小型代码清理改动这个数字让 Greg Kroah-Hartman 都感到 惊讶。对于一个 WiFi 芯片驱动来说获得如此多的关注并不寻常尤其是它目前还处于分级目录staging中尚未准备好供广泛使用。本次发布中包含的最重要的改动有特定于架构的改动内核新增了对 RISC-V Zicfiss 和 Zicfilp 扩展的支持这些扩展用于在用户空间提供硬件辅助的控制流完整性Control-Flow Integrity, CFI追踪。LoongArch 现在支持 128 位原子比较并交换Compare-and-Exchange, CAS指令 以及 对称多线程Symmetric Multithreading, SMT热插拔。后者可以通过sysfs配置或启动参数进行控制。核心内核内核的 zram 子系统 提供了一个内存中的压缩块设备当内存存满时它可以选择将数据移动到物理磁盘。以前内核在将这些页面写入物理设备之前必须先对其进行解压缩。现在页面写回writeback可以直接写入 zram 压缩后的数据。交换swap子系统已更改为 使用简化的交换表这使得代码得到了相当大程度的清理更多信息请参阅 这篇文章 及其 后续报道。softlockup_panicsysctl现在可用于 设置期望的超时时间内核在发生软锁定soft lockup后将按此时间以 20 秒为倍数触发恐慌panic。在此之前它仅是一个开启或关闭的设置。文件系统和块 I/O笔记本模式Laptop mode 是 2.6 内核中的一项功能旨在减少硬盘启动或停止的次数以节省电池电量该功能 现已被移除。旋转式机械硬盘已在很大程度上被固态硬盘所取代而且“这种努力似乎不再值得了”。将文件系统转换为使用大 folio 的工作仍在迅速推进F2FS 成为下一个获得支持的文件系统。 F2FS 是专门为 NAND 闪存设备设计的文件系统。ntfs3文件系统在经历了一段长时间的停滞后最近收到了 大量更新。与此同时完全替换现有实现的提案 也在邮件列表中流传。尽管得到了审查者 Christoph Hellwig 的 认可但新的 NTFS 实现并未在本次合并窗口中并入。NFSD网络文件系统守护程序添加了一个 可动态调节的线程池可根据需求自动扩展或缩减。此行为可以通过 NFSD 的netlink接口进行控制。NFS 协议 4.1 版是 新选择的默认版本不过用户仍可以在构建配置中选择旧版本。NFS 现在将 拒绝导出特殊的内核文件系统如pidfs和nsfs因为这些文件系统需要特殊的权限处理而 NFSD 并不具备。根据将 POSIX ACL访问控制列表 添加到 NFS v4.2 的 草案提案NFSD 已新增对其的实验性支持。硬件支持时钟Qualcomm Kaanapali 时钟控制器、Qualcomm SM8750 摄像头时钟控制器、Qualcomm MSM8940 和 SDM439 全局时钟控制器、Google GS101 DPU 时钟控制器、SpacemiT K3 时钟控制器、Amlogic t7 时钟控制器、Aspeed AST2700 时钟控制器以及 Loongson-2K0300 实时时钟。GPIO 与引脚控制Spacemit K3 引脚控制器、Atmel AT91 PIO4 SAMA7D65 引脚控制器、Exynos9610 引脚控制器、Qualcomm Mahua TLMM 引脚控制器、Microchip Polarfire MSSIO 引脚控制器以及 Ocelot LAN965XF 引脚控制器。图形Mediatek MT8188 HDMI PHY、Mediatek Dimensity 6300 和 9200 DMA 控制器、Qualcomm Kaanapali 和 Glymur GPI DMA 引擎、Synopsis DW AXI Agilex5 DMA 设备、Atmel microchip lan9691-dma 设备以及 Tegra ADMA tegra264 设备。工业 I/OAD18113 放大器、AD4060 和 AD4052 模数转换器ADC、AD4134 24 位 4 通道同步采样 ADC、ADAQ767-1 ADC、ADAQ7768-1 ADC、ADAQ7769-1 ADC、Honeywell 板载压力与温度传感器、mmc5633 I2C/I3C 磁力计、Microchip MCP47F(E/V)B(0/1/2)(1|2|4|8) 带缓冲电压输出的数模转换器DAC、s32g2 和 s32g3 平台 ADC、ADS1018 和 ADS1118 SPI ADC以及 ADS131M(02/03/04/06/08) 24 位同步采样 ADC。输入FocalTech FT8112 触摸屏芯片、FocalTech FT3518 触摸屏芯片以及 TWL603x 电源按钮。多媒体MediaTek MT8196 视频伴随处理器及外部存储接口。杂项Foresee F35SQB002G 芯片、TI LP5812 4x3 矩阵 RGB LED 驱动器、Osram AS3668 4 通道 I2C LED 控制器、Qualcomm Interconnect 片上追踪网络TNOC模块以及 DiamondRapids 非透明 PCI 桥。网络Glymur 带宽监控器、Glymur PCIe Gen4 2 通道 PCIe PHY、SC8280xp QMP UFS PHY、Kaanapali PCIe PHY以及 TI TCAN1046 PHY。电源ROHM BD72720 电源、Rockchip RK801 电源管理集成电路PMIC、ROHM BD73900 PMIC、Delta Networks TN48M 交换机复杂可编程逻辑器件CPLD、sama7d65 XLCD 控制器以及 Congatec 板级控制器背光。USBAST2700 SOC、USB UNI PHY 和 SMB2370 eUSB2 中继器、QCS615 QMP USB3DP PHY、SpacemiT PCIe/组合 PHY 和 K1 USB2 PHY、Renesas RZ/V2H(P) 和 RZ/V2N USB3 设备、Google Tensor SoC USB PHY以及 Apple Type-C PHY。其他用于测量调度延迟的 timerlat 工具新增了 一个选项当操作超过给定的延迟阈值时可以运行 BPF 程序。追踪tracing子系统也获得了 更具可读性的位掩码选项将位显示为列表而不是原始十六进制以及在tracefs中审计活动 过滤器 和 触发器 的方法。一个新的编译时配置选项 允许用户用自己选择的图像替换 Tux 启动图标。一个新的 “perf sched stats”命令 可以捕获调度器统计信息schedstat 计数器并进行报告。它还可以生成与之前报告的差异对比以便于比较。网络AccECN 拥塞通知协议已 开启供一般使用详情请参阅 这篇文章。cake 队列管理系统 已被 扩展为支持多队列。这使得 cake 的速率限制器可以在多个 CPU 之间扩展。用于与虚拟机通信的 VSOCK 套接字 增加了对 网络命名空间的支持。针对 802.11bn可能更广为人知的名称是“超高可靠性”WiFi 或 “WiFi 8”的工作已经 开始不过在获得完整支持之前还有许多细节需要敲定。虚拟化与容器KVM 在 LoongArch 上添加了一个掩码以 正确报告 CPUCFG 位从而为 LoongArch 访客机提供关于 CPU 能力的正确信息。一些 AMD CPU 支持增强型返回地址预测器安全ERAPS——这项功能可以在访客机退出回宿主机操作系统时减少对 CPU 状态进行某些安全相关刷新的需求。KVM 添加了 对使用 ERAPS 的支持并向访客机宣告该支持。有了 一个新的用户空间控制 来配置 KVM 的中断结束EOI广播抑制这可以防止 EOI 信号被发送到系统中所有的中断控制器从而提高中断效率。以前KVM 错误地宣告了对 EOI 广播抑制的支持即使它尚未完全实现。不幸的是这个缺陷持续了足够长的时间以至于一些用户空间应用程序开始依赖这种行为因此现在该功能已被正确实现用户空间程序在配置 KVM 虚拟机时必须选择开启该功能。访客机现在可以请求 性能监控单元PMU硬件的完整所有权这提供了比现有模拟 PMU 更准确的分析和监控。内核的 Hyper-V 驱动添加了 一个 debugfs 接口用于查看有关微软 hypervisor 的各种统计数据。内核内部改动通过使用 Coccinelle内核已 几乎全部切换到kmalloc_obj()。结构类型和联合类型的分配都已完成转换但需要手动检查的标量类型分配则保持原样。Linus Torvalds 随后针对这类大规模更改后不可避免出现的 问题 提交了 一些 修复。新接口根据提供的类型大小分配内存这意味着手动计算大小导致的错误将会减少。以前人们会写成这样ptr kmalloc(sizeof(*ptr), gfp);ptr kmalloc(sizeof(struct some_obj_name), gfp);ptr kzalloc(sizeof(*ptr), gfp);ptr kmalloc_array(count, sizeof(*ptr), gfp);ptr kcalloc(count, sizeof(*ptr), gfp);ptr kmalloc(struct_size(ptr, flex_member, count), gfp);现在可以写成ptr kmalloc_obj(*ptr, gfp);ptr kmalloc_obj(*ptr, gfp);ptr kzalloc_obj(*ptr, gfp);ptr kmalloc_objs(*ptr, count, gfp);ptr kzalloc_objs(*ptr, count, gfp);ptr kmalloc_flex(*ptr, flex_member, count, gfp);GFP_KERNEL现在也是默认设置如果这是唯一想要设置的内存分配标志则可以省略。合并窗口的后半部分通常比较平静这次也不例外。不过看到添加了许多调试功能总是件好事。到目前为止内核将进入通常的七到八个候选发布版本阶段因为开发人员正在追查本次合并窗口中引入的错误。最终的 v7.0 内核预计将在 4 月 12 日或 19 日左右发布。LWN 评论概述读者们讨论了 SpacemiT K3 处理器获得内核支持的历史意义评估了zram改进带来的性能提升并对内核代码中自动类型分配接口的易读性发表了看法。全文完LWN 文章遵循 CC BY-SA 4.0 许可协议。欢迎分享、转载及基于现有协议再创作长按下面二维码关注关注 LWN 深度文章以及开源社区的各种新近言论