LINUX.ORG.RU

Линус Торвальдс использует ИИ для дебага проблем с драйвером Intel Xe GPU

 , , ,


1

2

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

Фикс:

https://linux.googlesource.com/linux/kernel/git/torvalds/linux/+/818bebeb63dd6bf5f4e07e145f6cdbace520a34c



Последнее исправление: gagarin0 (всего исправлений: 3)

Интересно было бы почитать переписку с ИИ. Представляю, как Торвальдс там ругался: «But while the AI was ready to give up several times, it did keep adding debug code and analyzing it faithfully when I pushed».

knovich ★★
()
Последнее исправление: knovich (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария