Linux 6.18-rc3 中的新功能:内核更改和上下文

  • SMB Direct 领先 6.18-rc3,在客户端和服务器上具有更强的稳健性。
  • XFS、io_uring、网络和 DRM 均获得了实用且分布良好的修复。
  • 版本图将 6.17 定为稳定版本,将 6.12/6.6 定为关键 LTS 版本。

Linux 6.18-rc3

未来第三个发射候选 6.18 llega 低调行事,却又保持着内核生态系统所珍视的平静节奏。据 Linus Torvalds 本人称,目前进展平稳,周期也正常进行;换句话说, Linux 6.18-rc3 无需升级即可进行优化、修复和调整,重点关注整个树中的修复。

Torvalds 在简短的说明中指出,这批补丁中最大的部分是 SMB Direct 修复,包括客户端和服务器端,以及大量的微调补丁。其余部分则照常发布:大约一半影响驱动程序(也添加了 DeviceTree 绑定),以及 其余的是杂项修复:XFS、网络、io_uring、DRM、Rust Binder 和公司。如果您对细节感兴趣,下面有一个简短的日志,其中包含我们按子系统审查的数十项更改。

Linux 6.18-rc3 中的主要新功能

在本周的细分中,SMB Direct 模块尤为突出。SMB 客户端和服务器都会调整信用额度和队列,以防止性能下降和资源短缺。该子系统的多个部分通过确保以下几点来提高标准: 发送/刷新结构保留足够的空间 并且断开状态会强有力地唤醒所有等待的线程。

此外,XFS 中还包含修复程序,以防止段收集器中的繁忙循环、在 i_private 中缓存开放区域、加强对弃用挂载选项的处理,以及 修复链接检查和阻止的敏感部分此 rc3 中的 XFS 变化侧重于稳定性和对遗留参数的清晰诊断。

另一半是常见的驱动程序和平台组合:从 DRM/AMD 和 DRM/Xe 到 Rockchip,再到 mlx5/mlx5e 网络、Realtek 和 Micrel PHY、UFS/Qualcomm、USB/xHCI DbC 等等。这是一个“管道”rc3,其中 该值是小修正的总和 防止崩溃、内存泄漏或时间不匹配。

SMB 和 SMB Direct:注重稳健性

El 短日志 明确了 SMB Direct 的努力。其中最相关的几点是:

  • SMB 客户端和服务器调整工作请求的空间,防止溢出并确保 QP 排水 (ib_drain_qp) 安全。计数器被引入和消耗。 运费积分 在关键路径上。
  • 服务器简化了发送路径(flush/send_done)上的兄弟列表管理,并使 RDMA 断开连接在第一次尝试时唤醒所有线程。
  • smb3_rw_credits 中的跟踪得到加强,包含的内容被重新排序,以便结构在跟踪点中可用,并且 TCP 信用结构中的符号类型是固定的.

总体而言,SMB Direct 的改进旨在确保 RDMA 在负载下传输顺畅、行为可预测,并能处理错误状态,不会留下任何悬而未决的线程。这些调整虽然细微,但 在高性能环境中发挥作用.

文件系统和存储

的部分 文件系统和块 包括几件值得注意的作品:

  • XFS:避免繁忙循环、缓存区域、禁止 FS 上下文初始化中的 __GFP_NOFAIL、改进已弃用选项的消息,以及 修复锁和扇区计数器.
  • Btrfs:修复了 ref-verify(IS_ERR 与 NULL),在崩溃时释放部分初始化的 fs_info,并修复了 btrfs send 以避免使用 extrefs 重复 rmdir 操作。
  • EROFS:强化对恶意编码扩展的处理,以防止循环和 合并回顾搜索 在损坏的子页面上。
  • 块层:使用保护信息 (PI) 时强制 LBA 对齐以维护低级完整性。

此外,scsi/ufs/phy(新兼容设备的绑定)、storvsc(优先选择与发出 I/O 的 CPU 相关的通道)以及 qla4xxx 等驱动程序的调整也正在进行中。这些部分结合在一起, 增强 I/O 稳定性和性能 在真实案例中。

网络:mlx5/mlx5e、bonding、HSR 等

网络上的情况多种多样,重点关注 高性能 以及人迹罕至的角落:

  • mlx5/mlx5e:PCAM 中的 PPHCR 寄存器掩码,如果设备不支持该寄存器,则跳过查询,并在传统队列和跨队列中从非线性 xdp_buff 生成 skbs 时进行 RX 修复。此外, 修复 MPV 设备上的 IPsec 并且 devcom 在发生错误时返回 NULL。
  • 绑定:从属阵列以广播模式更新,并纠正对等通知中可能出现的丢失或重复。
  • HSR:防止创建具有来自其他网络的从属设备的设备,关闭不一致的配置路径。
  • Gro 和 gro_cells:skbs 重用路径上的 hwtstamps 被清理,并且 锁定不平衡问题已得到纠正 在 gro_cells_receive 中。
  • 其他:virtio-net 将未使用的哈希字段清零;hibmcge 选择 FIXED_PHY;dlink 使用 dev_kfree_skb_any;stmmac/rk 修复时钟选择功能;enetc 修复 MDIO 锁死锁和 TRUESIZE 值。

总体而言,网络堆栈会收到少量补丁,以防止在负载下出现意外,并处理数据路径中的细节,如果发生故障, 转化为延迟、丢失或阻塞.

图形和显示:DRM/AMD、DRM/Xe、Rockchip 和 QR Panic

DRM 领域也在不断发展, 安全和稳定性变化:

  • DRM/AMD 显示:在中断上下文中使用 GFP_NOWAIT,增加链接最大值,并避免在链接→enc 中进行 NULL 访问;此外, 特定路径上的空指针修复.
  • DRM/Xe:在为 madvise 重新创建和拆分 VM 时保留 VM 标志,并将 madvise 自动重置隐藏在 VM_BIND 标志后面,从而消除危险边缘。
  • Rockchip:在 dw_hdmi 中更正 RK3228 的 SCLIN 掩码。
  • drm/panic:对带有徽标和二维码的“恐慌模式”进行了几项改进:避免与徽标重叠,确保正垂直边距,防止在屏幕宽度小于字体宽度时被零除 不要跨越 24 位像素的页面.
  • Intel i915:分配结构时防止恐慌对象泄漏。

甚至连 Panthor(GPU)也进行了调整,以防止因部分取消映射 VA 区域而导致内核崩溃,这是一个在内存碎片化场景中经常出现的恼人 bug。这些变化虽然细微,但 防止真实计算机崩溃.

锈迹粘合剂和经典粘合剂

Rust Binder 通过多项调整不断完善:移除了关于孤立映射的警告;在出现意外状态时会重新发送 freeze_notif_done 通知;如果存在待处理的重复项,则阻止删除 FreezeListener;并且仅在进程实际冻结时才会报告通知。同时,经典 Binder 移除了不再起作用的“invalid inc weak”检查。在工具链方面, objtool 将附加的 Rust 函数识别为“noreturn” 并且 Rust Binder 中的 clippy 警告已被清除。

io_uring、sqpoll 和 zc rx

在 io_uring 中,进行了几项细微的调整:修复了 io_waitid_prep() 中 unlikely() 的误用,调整了 __must_hold 注释,修复了 uring_cmd 多重命令的缓冲区自动提交问题,并且 sqpoll CPU 核算已重新评估 将 getrusage() 留待下次使用,并更智能地更新 stime。此外,已在 MAINTAINERS 中添加 zcrx 的条目。

架构和 ACPI:RISC-V、arm64 和 x86

建筑 它们多种多样且具体:

  • RISC-V:pgprot_dmacoherent() 是为非相干设备定义的,禁用 CPU 的详细信息不会打印在 DT 中,IPI IRQ 以唯一名称注册,MAX_POSSIBLE_PHYSMEM_BITS 是为 zsmalloc 定义的,并且 删除了不必要的旧宏。还修复了 hwprobe 中的未初始化用法和 vDSO 中的延迟初始化密钥。
  • arm64:在 MTE 中,如果页面已在 copy_highpage() 中标记,则会抑制警告。
  • x86:调整英特尔的 RETBLEED 消息,修复 Zen1/Naples 的 Entrysign 修订检查,以及 缓解措施中清除了死代码.
  • ACPI/properties:修复了 acpi_node_get_property_reference() 中的参数顺序,并在 RIMT 中禁用 IOMMU_API 时删除了警告。

它还修复了一些奇怪的代码,例如 MIPS Malta 中用于锁定 IO 范围的 pcibios_align_resource(),以及阻止 i8042 注册的键盘资源。这些小改动 避免死锁场景或脆弱的初始化.

驱动程序和总线:SPI、串行、hwmon、GPIO、PCI/ASPM 等

这款 rc 带来了良好的 一堆修正 在驱动程序中:

  • SPI:Airoha 的错误目录映射现在返回失败,在 exec_op 中添加双/四支持,如果出现问题则回退到非 DMA 模式,并修复每个 LUN 的多平面闪存;NXP FSPI 在需要时重置时钟,并且 根据来源限制频率,此外还增加了DLL锁定后的延迟;Intel SPI增加了对128M密度和新平台(Arrow Lake-H、Wildcat Lake)的支持。
  • 串行和 TTY:8250_dw 处理重置时的错误;8250_mtk 启用波特率时钟并将其传递给运行时 PM;sc16is7xx 清除不必要的启用波特率;sh-sci 修复 FIFO 溢出。
  • PCI/ASPM:在 DeviceTree 平台上,仅启用 L0 和 L1,这是一个避免未经验证状态的保守决定。
  • GPIO:ACPI 降低去抖动错误严重性;gpio-regmap 添加 fixed_direction_output 参数;I​​DIO-16 模块定义
    最大有效地址和 固定线路地址.
  • Hwmon 和 pmbus:修复了子节点的参考泄漏并更新了 Max/ISL 模型系数,以及有关 GPD 风扇驱动器的详细信息。

同时,除了新的选项 ID(Telit FN920C04 ECM、Quectel RG255C、UNISOC UIS7720)之外,还向 SPI Cadence(ZynqMP/Versal-Net)、Rockchip RK3506 和 UFS QMP for Kaanapali 添加了 DT 兼容模块。 微调对新到硬件的支持.

内存、slab 和 mm/damon

内存区域也受到关注:在 slab 中避免了 obj_exts 和 NULL 混淆条件的竞争;mm/mremap 正确地解释了 DONTUNMAP 之后的旧映射;THP 防止在分割大页面时消耗毒药;DAMON 清理 ops_filter 泄漏和 集中配额目标逻辑. 在 hugetlbfs 中,锁断言在 huge_pmd_unshare() 中的早期返回后被移动。

安全、跟踪和 Kconfig

虽小但很重要的部分:

  • lib/crypto:Poly1305 恢复与 !KMSAN 的依赖关系,避免配置冲突。
  • 包括/跟踪:修复了启动失败时的飞行计数助手;添加了用于读/写信用的 SMB3 跟踪点。
  • 各种 Kconfig:CONFIG_XFS_RT 帮助得到改进,并且测试/统计数据适应 DEBUG_FS。 QCOMTEE 和其他平台中的依赖关系修复.

这些细微的改进可以防止内核配置过程中出现问题,并使诊断某些启动异常变得更加容易。这些改进的最终结果是 减少浪费的时间.

这篇对 6.18-rc3 的评测明确了重点:稳健性而非虚张声势。从 SMB Direct 块到 XFS 的调整,再到网络、图形和内存方面的大量驱动程序和修复,一切都表明这是一个更加可靠的内核。添加到版本图中(以 6.17 为最新稳定版本,以 6.12/6.6 为参考 LTS 版本),我们对当前状态有了清晰的了解: 持续迭代,在重要之处提供长期支持 每个团队都能够冷静地规划迁移路径,了解哪些分支是安全的,哪些分支仍处于起步阶段。

Linux 6.18-rc2
相关文章:
Linux 6.18-rc2 隆重发布,对图形、Rust 和 AMD Zen 进行了关键修复