Торвальдс с помощью ИИ исправил баг в драйвере Intel Xe за 18 перезагрузок

Линус Торвальдс впервые за долгое время самостоятельно написал патч для ядра Linux — и сделал это с помощью искусственного интеллекта. Баг находился в драйвере Intel Xe для видеокарт Battlemage G21 и вызывал бесконечные перезапуски дисплейного менеджера GDM. На поиск причины ушло 24 отладочных патча и 18 перезагрузок ядра.

Редкий случай: Торвальдс снова пишет код

Торвальдс давно отошёл от написания кода ядра и работает в режиме мейнтейнера: ревьюит патчи и принимает pull request от контрибьюторов. Поэтому его собственный патч — событие само по себе необычное. Однако использование ИИ для него уже не новость: ещё в прошлые новогодние праздники он впервые применил ИИ в личном хобби-проекте. Тогда он признался, что сначала относился к технологии скептически, но со временем принял её, допуская даже ассистированные ИИ правки в проекте ядра.

Однострочный фикс, который искали 18 перезагрузок

Проблема, с которой столкнулся Торвальдс, была в драйвере Intel Xe для видеокарт Battlemage G21. Из-за бага дисплейный менеджер GDM перезапускался бесконечно. Несмотря на кажущуюся простоту итогового решения, поиск корня проблемы занял серьёзное время.

В ходе отладки ИИ выполнял основную черновую работу: добавлял диагностическую инструментовку, запускал анализ и даже написал финальное сообщение коммита. В итоге виновником оказалась одна строка: вместо функции round_up() должна была стоять round_down().

Отладка, по словам Торвальдса, была «из ада», и помощь ИИ оказалась огромной. Но не обошлось без курьёзов: ассистент несколько раз заявлял, что проблема «невозможна и неразрешима». Торвальдс не согласился с этим и продолжил работу. Своё отношение к таким ответам он прокомментировал с иронией: «Подозреваю, что эти модели обучали на людях, которые не такие упрямые, как я».

Кстати, работа над ядром не стоит на месте: в свежем Linux 7.2 появился планировщик с учётом кэша, поддержка HDMI 2.1 для AMD и загрузка на Apple M3. А Canonical финансирует PhD-проект по автоматическому переводу C в Rust для Ubuntu — возможно, скоро часть подобных багов будет отсекаться ещё на этапе компиляции.

ИИ — инструмент, а не замена инженеру

Этот случай хорошо иллюстрирует правильное отношение к ИИ в разработке. Инструмент полезен, когда процессом управляет опытный специалист, понимающий, что происходит. Человек, который просто «виб-кодит» и полностью передоверяет решения ИИ, в этой ситуации получил бы ответ «баг неисправим» и остановился. Торвальдс же смог оценить, где ассистент прав, а где ошибается, настоял на своём и довёл задачу до конца.

Патч войдёт в ядро Linux 7.3 и отмечен для бэкпорта в стабильные ветки. Какая именно модель ИИ использовалась, не сообщается. В личном проекте, где Торвальдс впервые применил ИИ, это был Google Gemini.

Частые вопросы

Какая именно ошибка была в драйвере Intel Xe?

В драйвере для видеокарт Battlemage G21 использовалась функция round_up() там, где должна была быть round_down(). Это приводило к бесконечным перезапускам дисплейного менеджера GDM.

Сколько времени заняла отладка?

Точное время не сообщается, но процесс потребовал 24 отладочных патча и 18 перезагрузок ядра. По словам Торвальдса, отладка была «из ада».

Это первый случай использования ИИ Торвальдсом?

Нет. Впервые он применил ИИ в личном хобби-проекте в прошлые новогодние праздники. С тех пор он допускает использование ИИ и для ассистирования правок в ядре.

В какие версии ядра попадёт исправление?

Патч войдёт в Linux 7.3 и будет перенесён в стабильные ветки ядра.

Какая модель ИИ использовалась?

Неизвестно. В личном проекте Торвальдс использовал Google Gemini, но какая модель помогала в этот раз, не сообщается.

Означает ли это, что Торвальдс вернулся к написанию кода?

Нет. Это разовый случай. Торвальдс по-прежнему работает в режиме мейнтейнера: ревьюит и принимает патчи от контрибьюторов.

Чем этот случай полезен обычному разработчику?

Он показывает, что ИИ — это инструмент, который ускоряет рутинную работу, но не заменяет понимания кода. Без опыта и упорства инженера ассистент мог бы просто сдаться и назвать баг неисправимым.

Источник: itsfoss.com