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

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

Daroc Alden
Gemini 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/O

     :AD18113 放大器、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 板级控制器背光。

  • USB

     :AST2700 SOC、USB UNI PHY 和 SMB2370 eUSB2 中继器、QCS615 QMP USB3+DP 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 深度文章以及开源社区的各种新近言论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值