行业动态
Linus Torvalds 借 AI 修复英特尔 GPU 驱动 bug
Linus Torvalds 在 Linux 内核审查中用 AI 工具定位并修复了英特尔 Xe GPU 驱动 CCS 偏…
2026.08.23 · 周日约 3 分钟阅读
Linux 内核维护者 Linus Torvalds 在一次代码审查中借助 AI 工具定位并修复了英特尔 Xe GPU 驱动中一处长期潜伏的内存布局缺陷,相关补丁已合入内核主线。
Bug 所在:CCS 偏移计算函数
问题出现在 xe_gt.c 的 get_flat_ccs_offset() 函数中。该函数负责根据硬件寄存器算出 CCS(Command Capture Storage,命令捕获存储)在系统显存中的偏移,再交给后续的 VRAM 分配器使用。原代码的处理流程是:
- 将硬件计算出的
offset向上对齐到 128K(round_up(offset, SZ_128K)); - 用一个断言检查结果是否恰好等于
GSMBASE - ccs_size。
问题根因:永远成立的断言
补丁注释指出,这段旧断言在数学上"不可能失败"。原因在于:
- 硬件读出的
GSMBASE - ccs_size本身就是 128K 对齐的; - 而断言左值
offset也已被向上对齐到 128K; - 两者天然相等,断言永远通过。
也就是说,当 CCS 的真实起始地址并非 128K 对齐时,这个断言形同虚设,无法暴露出实际可能存在的空洞或越界问题。
补丁要点
新提交的改动对函数做了两处实质性修正:
- 对齐方式由
round_up(offset, SZ_128K)改为round_down(offset, SZ_4K)。注释中说明,小于该偏移的地址会交给 VRAM 分配器,因此该值必须是压缩硬件真正拥有的第一个地址——向上取整反而会把部分 CCS 存储错误地发布为空闲内存。 - 同步更新断言为
offset + ccs_size <= GSMBASE,使其可以真正检测 CCS 与 GSM(Graphics System Memory,图形系统内存)区段是否发生重叠。
改动后的逻辑在保留防御性检查的同时,让断言真正承担起校验职责。
AI 辅助调试的价值
这一改动并非表面上的算术调整,而是修复了一个靠静态断言永远无法触发的隐患。Torvalds 在审查过程中,由 AI 协助比对代码逻辑、指出"断言恒为真"这一关键疑点,从而迅速锁定根因并完成修正。该案例展示了 AI 辅助在底层系统编程与内核调试场景下的实用价值:不仅可以生成样板代码,也能在差异比对和逻辑审查环节帮助经验丰富的维护者发现隐蔽缺陷。
