NVIDIA: критические сбои драйверов на ядре Linux 6.10
Компания NVIDIA занимается расследованием критического бага, при котором их драйверы начинают сбоить при работе на последних версиях ядра Linux (начиная с версии 6.10 и выше). Эта проблема затрагивает драйверы версии 550, 555 и даже последний на текущий момент драйвер 560. Проблема проявляется как на закрытых драйверах NVIDIA, так и на их открытых версиях.
Судя по данным на форуме NVIDIA, эта ошибка возникла в результате регрессии, связанной с обновлением ядра Linux до версии 6.10. Ошибки возникают в ситуациях, когда активируется механизм приостановки системы (suspension) или когда какое-либо приложение начинает обрабатывать 3D-графику. Проблема заключается в появлении системных сбоев (kernel oops), что доставляет массу неудобств как разработчикам, так и пользователям.
Пример сбоя драйвера
Система неожиданно начинает зависать и давать сбои в самых неожиданных моментах, особенно при запуске игр или работе с графическими приложениями. Пример из системного журнала:
[ 29.168385] ------------[ cut here ]------------
[ 29.168385] WARNING: CPU: 13 PID: 7032 at include/linux/rwsem.h:80 follow_pte+0x1de/0x200
[ 29.168387] Modules linked in: rfcomm nvidia_drm(OE) nvidia_uvm(OE) nvidia_modeset(OE) nvidia(OE)
...
[ 29.168456] CPU: 13 PID: 7032 Comm: nv_queue Tainted: P W OE 6.10.6-arch1-1 #1 703d152c24f1971e36f16e505405e456fc9e23f8
[ 29.168457] Hardware name: ASUSTeK COMPUTER INC. ASUS TUF Dash F15 FX517ZR_FX517ZR/FX517ZR, BIOS FX517ZR.317 05/03/2023
[ 29.169159] ret_from_fork+0x31/0x50
[ 29.169164] ---[ end trace 0000000000000000 ]---
Проблема проявляется следующим образом:
- Видео становится дерганым и каждые 45 секунд случаются кратковременные «фризы».
- В играх происходит разрыв между изображением и игровым процессом: игра продолжается, пока экран заморожен.
- После 30 минут игры средняя нагрузка на систему может взлететь до трёхзначных значений, при этом инструменты мониторинга, такие как top, iostat, vmstat или free, не показывают явных признаков ухудшения производительности системы.
- Команда dmesg заполняется похожими трассировочными сообщениями стека (stack trace).
На данный момент временным решением может быть использование предыдущих версий ядра. Например, переход на ветку linux-lts (долгосрочная поддержка) с версией ядра 6.6 в сочетании с драйверами NVIDIA версий 550 или 555 может помочь избежать сбоев.
>>> Подробности