Linus лично отлаживал довольно мерзкий баг в Intel Xe GPU driver и использовал LLM как помощника.
Симптом был такой: на Intel Battlemage после cold boot compositor мог падать на первой GPU submission, появлялся чёрный экран, а gdm перезапускал compositor по кругу. При этом следующий запуск иногда внезапно работал.
Причина оказалась в расчёте границы VRAM, зарезервированной под Flat CCS — metadata для компрессии GPU.
В драйвере было примерно так:
offset = round_up(offset, SZ_128K);
После этого всё ниже offset считалось обычной доступной VRAM.
Проблема в том, что реальная CCS-область начиналась чуть раньше округлённой границы. В результате одна 4K-страница одновременно считалась:
- свободной VRAM со стороны allocator’а;
- частью CCS storage со стороны железа.
На машине Linus границы были примерно такие:
real CCS base: 0x3fafff800
allocator: 0x3fb000000
То есть allocator случайно отдавал страницу, в которую GPU hardware независимо писал CCS metadata.
Особенно красиво получилось то, что Mesa разместила именно там GPU page table. CCS начинал её портить, после чего первая submission compositor’а уходила в timeout.
Фикс в итоге практически однострочный:
- offset = round_up(offset, SZ_128K);
+ offset = round_down(offset, SZ_4K);
То есть если всё ниже границы считается доступной памятью, границу надо округлять вниз, а не вверх.
Сам Linus назвал расследование debug session from hell: понадобилось около 24 debug-патчей и 18 загрузок ядра.
Причём модель несколько раз пыталась убедить Linus, что проблема практически неразрешима и расследование стоит закончить. Linus это игнорировал и заставлял её продолжать собирать факты и добавлять instrumentation.
В итоге root cause нашли, а подробный commit message Linus также дал написать AI.
Сам тред:
https://lists.freedesktop.org/archives/dri-devel/2026-August/590630.html
Фикс:













