Linux 7.2 版本

Hacker News Top 新闻

摘要

Linux 7.2 已发布,带来了重大改进,包括缓存感知调度、Raspberry Pi GPU 的电源管理以及各种性能提升。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/20 19:16

# Linux 7.2 发布 | Igalia 来源:https://www.igalia.com/2026/08/19/Linux-72-Released.html Linux 7.2 已于本周按常规周期打上标签并正式发布 (https://lore.kernel.org/r/CAHk-=wjk5StpAmUKHacj=GPKwA88y_YRHK=i_YAJFgmxn1=k4w@mail.gmail.com/)。 本开发周期是史上最为繁忙的周期之一,仅略逊于 6.7 版本。鉴于过去三四个周期一直非常活跃(尤其是在修复方面),这已成为一种“新常态”。本周期取得了一些有趣的进展,例如缓存感知调度 (https://lwn.net/Articles/1018334/)、MGLRU 改进、sched_ext 的子调度器概念(LWN 有精彩介绍:https://lwn.net/Articles/1056014/)、多尺寸透明大页的自动创建(LWN 同样有优秀导读:https://lwn.net/Articles/1077208/)等——完整详情请查阅 LWN 文章(第一部分 (https://lwn.net/Articles/1078068/) 和第二部分 (https://lwn.net/Articles/1078539/))。 Igalia 延续了惯常的贡献力度,其中最具分量的是 DRM 调度器公平策略。该策略在最后时刻(7.2-rc7 周期)因回归报告而被调整为可选启用(详见下文)。除此之外,我们还在树莓派 4 和 5 上为 GPU 实现了出色的运行时功耗管理,改进了 sched_ext、futex,并修复了多项通用缺陷。以下是我们工作的重点回顾! ## Igalia 变更记录 ### DRM 调度器公平策略 在本发布周期中,我们计划落地并启用 DRM 调度器公平策略,该策略能在多客户端共享 GPU 场景以及轻量级交互客户端与高负载客户端竞争 GPU 时带来显著性能提升。不幸的是,由于在 7.2-rc7 周期最后时刻收到回归报告,当前默认策略将保持为传统的先进先出 (FIFO) 调度器。由于针对该回归的修复方案已明确且初步测试效果良好,我们期望它能在后续内核版本中重新启用。 ### sched_ext 我们改进了 sched_ext 的可观测性以简化调试。当自定义 sched_ext 调度器遇到运行时错误(例如超过 30 秒无法调度任务)时,内核会将其弹出并回退到默认调度器。为帮助诊断这类故障,内核会导出各 CPU 的状态信息。但在多核系统中,由于内核空间与用户空间之间的缓冲区限制,这些转储可能被截断。我们通过优先处理退出 CPU(即触发错误的 CPU)来缓解此问题——确保其信息被最先导出,同时将其 CPU ID 直接暴露给 BPF 调度器和用户空间工具。 ### 树莓派 GPU 功耗管理及其他改进 在本版本中,我们为树莓派 4 和 5 的 GPU 实现了运行时功耗管理 (Runtime PM)。 此前,V3D 驱动的功耗模型非常简单:GPU 时钟在探测阶段启用,并在驱动整个生命周期内保持开启。尽管这种实现简单有效,但意味着即使 GPU 未实际执行任务,在空闲状态下仍会消耗电能。 通过运行时功耗管理,GPU 仅在实际处理工作时才获得供电,空闲时可关闭时钟。这降低了树莓派未使用 GPU 时的能耗。我们为此特性撰写了博客文章 (https://mairacanal.github.io/bringing-runtime-pm-to-raspberry-pi-gpu/),包含更多细节和功耗测量数据。 我们还修复了树莓派 3 GPU 驱动中两个长期存在的缺陷——它们多年来一直影响着 RetroPie 用户,导致随机 GPU 挂起和完全系统崩溃。问题根源在于内核处理图形帧时 GPU 空间耗尽的瓦片内存管理方式。我们的修复确保每个图形任务仅写入自己的内存区域,并在重用内存前进行清理,防止陈旧或损坏的数据传递至 GPU。通过这些修复,RetroPie 用户在菜单导航时应不再遭遇崩溃问题。 最后,我们针对树莓派 4 和 5 的 GPU 重置流程修复了多项问题,使其更加可靠和稳定。 ### Futex 测试与文档 我们持续改进并维护 `futex()` 系统调用——这是各类工作负载用于创建同步机制的重要接口。本周期中,我们协助设计并落地了一个存在 14 年之久的缺陷 (https://lore.kernel.org/r/[email protected]/) 的解决方案,该问题在部分边缘情况下会导致健壮列表机制出现数据损坏。 ### 通用缺陷修复 我们修复了 `ueagle-atm` 驱动中的一个长期问题:该驱动在设备探测和断开连接过程中,通过 `request_firmware` API (https://docs.kernel.org/driver-api/firmware/request_firmware.html) 可能触发 `kernfs` 创建与删除操作之间的竞争条件,多年来在 syzbot 中产生大量错误报告。 我们还改进了 x86 启动期间使用的 `memcmp()` 内联汇编实现的正确性,防止因编译器优化和指令重排序导致的潜在微妙缺陷。 ### 迈向完整 HDMI 2.1 支持 本版本中发布的 HDMI 2.1 固定速率链路 (FRL) 部分支持功能,源自 Igalia 的 Rodrigo Siqueira 在 AMD 任职期间的工作。该实现提供了允许 amdgpu 驱动与 HDMI 2.1 显示器通信(主要是 FRL 实现)的基础支持。这项实现曾在主代码库外存放多年,后被纳入源代码,部分内容保持了原始编写状态,部分则在整合过程中经过重构。Igalia 在各类 DRM/KMS 驱动方面拥有丰富经验,这种针对 HDMI 2.1 特性的实践经验,与厂商启用自身驱动前沿功能所需的知识体系形成了良好互补。 --- ## 贡献统计(82 项) ### André Almeida - 文档:futex:添加关于健壮列表竞争条件的说明 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3f63e2545978abda58f2cf7ff0d7a2942965e8cb) - 自测试:futex:添加健壮释放操作的测试 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=608323bf7bb85bbb647eca4373acef247f105e67) ### Changwoo Min - sched_ext:从 scx_dump_state() 中提取 scx_dump_cpu() (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3f63ddda0b969410585757309cc95add4f256f45) - sched_ext:优先导出退出 CPU (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=78683079ca6d91392e84ed313e15bb330d7da851) - sched_ext:向 BPF 和用户空间暴露 exit_cpu (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ee8391ba11644fd3dce6e22ece54725a1bb5b50e) ### Helen Koike - fs/ntfs3:重命名失败时调用 _ntfs_bad_inode() (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e8ed78f40eecd0176fda71d673f6957c98e7ffbe) - tipc:修复 __tipc_nl_compat_dumpit 中的无限循环 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=22f8aa35964e8f2ab026578f45befc9605fd1b28) ### John Harrison - drm/connector/hdmi:修复越界内存读取 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9ecf8ba763d0ffe0673538eb4bf7806f20455d19) ### Jose Maria Casanova Crespo - drm/vc4:在 BPOS 中提供溢出槽大小而非整个 bin BO 大小 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6395789e4739aa5177bbec0fa0f07ccc38d249b0) ### Mauricio Faria de Oliveira - usb: atm: ueagle-atm:为“设备已找到”消息使用 dev_dbg() (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05c5075c3115010f97434c53d353d9a0d4b0e64e) - usb: atm: ueagle-atm:移除函数入口/出口调试消息 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1414b2242c2e9d670c4d8b83480f13db57627ba9) - usb: atm: ueagle-atm:在 .disconnect() 中等待预固件加载 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e2674dfbed8a30d57e2bc872c4bfa6c3eec918bf) - x86/boot:为 memcmp() 添加 volatile、clobbers 和零长度测试 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a8c171c107c0b61a5e7e10cedab0fb72aeaf640d) ### Maíra Canal - drm/vc4:使用 devm_request_irq() 实现自动清理 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=19e2815babd4c51a51ebabfe68daa90eb26309c3) - drm/vc4:清理 UAPI 头文件引入 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b9c36c83b34f710da9573291404f6a2246251c1) - drm/v3d:使用 devm_reset_control_get_optional_exclusive() (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=de1e32ef1d625ee4d717bcf10c23df2722324f62) - drm/v3d:启用时钟前分配所有资源 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ffd7371ed4179827dcf401543b37b69e5781f924) - drm/v3d:引入运行时功耗管理 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=458f2a712ab42b7d3615208862922dc35fe90ef9) - drm/connector:将 drm_connector_attach_hdr_output_metadata_property() 设为 void 返回类型 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=efcd474ed273ae7da614b30e798651c6d57d3109) - drm/v3d:运行时恢复时刷新 MMU TLB 和缓存 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=257adf5ea64901263071a4a8e6ff958c5e0712c1) - drm/v3d:运行时挂起前清理缓存 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b81e8b02e8f26b13ff4d6410f7a9854ba7021b86) - drm/v3d:间接 CSD 设置中拒绝无效的间接 BO 句柄 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f8b8593c7832fad655290cef9e99af05b1b52b3) - drm/v3d:在 V3D 7.x 上通过 hub 寄存器访问 GMP (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7df2da0d1c375c1c4c70e1e0b569592de0d6b73) - drm/v3d:挂起时禁用时钟前空闲化 AXI 事务 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=07e769ba3d82ac614725c81c512a8b54d33f2c9e) - drm/vc4:每个 BIN 任务前清零瓦片状态数据数组 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48a570c964d8e37d353381e4195106277e17f5cb) - drm/v3d:序列化调度器超时处理程序 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4da94744707b27a3ae1197bdd7127da4505dc5b1) ### Thadeu Lima de Souza Cascardo - drm/amdgpu:更早初始化 irq.lock 自旋锁 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a2b270c0ecf6d95bcd14ef4c20d0301a88143ff5) ### Tvrtko Ursulin - dma-fence:修复潜在的跟踪点空指针解引用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e94b9f01543cc6a83538c2c2cc645a424d3015ca) - drm/sched:禁止使用无调度器初始化实体 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28c5bf28763d670290e29dc42def04e9c1b3ad14) - drm/sched:整合实体运行队列管理 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7e0a39407f72158fc79705d0bd1446d6d312bde5) - drm/sched:将运行队列相关代码移至独立文件 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4eadf3fe47602706f7b85bdf05ef60ddad8de0c2) - drm/sched:添加调度质量单元测试 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=97ef806a53146837f6ca84a1b36763fb3bb67eaa) - drm/sched:补充调度质量单元测试 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=df5ff8b62a47bb6a378c81ce8aff267f6e5c9e3f) - drm/sched:通过 FIFO 实现 RR (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=94e18404007d3d4c3438ca31d1430a7cf562bd59) - drm/sched:一次性释放所有已完成任务 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a58f317c1ca06d213f49612730206ff90eeaacd8) - drm/sched:统计实体 GPU 时间 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fd177135f0e62344f5d0ad3b12d40f8f7e5cdaab) - drm/sched:从树中移除空闲实体 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8637ddeeb4bbd48dafa1be316d8296e8d49e7521) - drm/sched:添加公平调度策略 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2fa4d8e2c1091189064c5b93222a23ded2d881ba) - drm/sched:为交互式客户端提供轻微优先 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=af85fa14ad7c4adf4276c65bb640843c6d210927) - drm/sched:将默认策略切换为公平调度 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=45c211ddf92a1f9b4214ffadaf70d9037f53aaf6) - drm/sched:移除 FIFO 和 RR,简化为单一运行队列 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=77a6809f1dc39376116f8d769a0d2630dc95ad79) - drm/sched:将运行队列单例嵌入调度器 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=16e7698bc04d3dd19d95a688e4b0297a0e28a93b) - accel/amxdna:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ac58121339db0178186d256a956bb65feb8b6e45) - accel/rocket:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f335bba019958e59c2a02c4d71b72a8457cc595) - accel/ethosu:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=06879a9ad55bc4a7aa2e1bb7ee9fa658cdddee79) - drm/amdgpu:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2462a0ce23b0ba1c2195beccf39bc8608cdbd84e) - drm/etnaviv:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=adfb5deba567045d74bfd75482b8d4f89d073004) - drm/imagination:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f84d73d2a08498174d950ba5935930dd94df7d3c) - drm/lima:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=098fe077ec029a1c8ded65af3c2b2a4190d93e9d) - drm/msm:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9c44ff055965f2f75eee2ac95a7692600cf026a8) - drm/nouveau:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=79005e34bdcbb4a0b7f512bc32981fb60041767b) - drm/panfrost:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=285eab7f55ae3d961bfa4e759c3d2d0033e72294) - drm/panthor:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=30c4a19cf71f040462254dcb8b2d3c3e7232b99b) - drm/sched:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2833a0512b4cd55d9fea7ec18be85ef82e69ad3b) - drm/v3d:移除 drm_sched_init_args->num_rqs 使用 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2833a0512b4cd55d9fea7ec18be85ef82e69ad3b)

相似文章

Linux 7.1

Hacker News Top

Linux kernel 7.1 已在内核邮件列表上宣布,标志着新主版本发布,预计将带来功能更新和改进。

Linux 7.3 在 VRAM 不足时提升性能

Hacker News Top

Linux 7.3 合并了改进 VRAM 管理的内核补丁,通过优化内存淘汰和缓存机制,在物理 VRAM 不足时增强了游戏性能稳定性。