Найти в Дзене
Games4Linux

Драйвер Mesa NVK временно отключает поддержку больших страниц памяти из-за ошибки

Открытый графический стек для NVIDIA продолжает своё сложное, но поступательное развитие. После того как в ядро Linux 6.19 была добавлена поддержка больших страниц памяти (large pages) в драйвере Nouveau, команда Mesa начала готовить её использование в драйвере NVK (Vulkan) для повышения производительности через сжатие текстур. Однако недавно оптимизацию пришлось временно откатить: в тестах Vulkan Conformance Test Suite (CTS) стали возникать ошибки MMU (Memory Management Unit). Разработчики нашли корень проблемы и уже предложили патч. После активации поддержки больших страниц (64 КБ вместо стандартных 4 КБ) в пользовательских тестах начали появляться сообщения о сбоях доступа к памяти (fault reports), хотя адрес был корректным. Разработчик Дэвид Эрли (David Airlie) оперативно подготовил патч для драйвера Nouveau, который решает проблему. Пока патч не попадёт в основное ядро, поддержка больших страниц в пользовательской части (драйвер NVK в Mesa) будет отключена. Это — стандартная и пра
Оглавление

Открытый графический стек для NVIDIA продолжает своё сложное, но поступательное развитие. После того как в ядро Linux 6.19 была добавлена поддержка больших страниц памяти (large pages) в драйвере Nouveau, команда Mesa начала готовить её использование в драйвере NVK (Vulkan) для повышения производительности через сжатие текстур. Однако недавно оптимизацию пришлось временно откатить: в тестах Vulkan Conformance Test Suite (CTS) стали возникать ошибки MMU (Memory Management Unit). Разработчики нашли корень проблемы и уже предложили патч.

В чём была проблема?

После активации поддержки больших страниц (64 КБ вместо стандартных 4 КБ) в пользовательских тестах начали появляться сообщения о сбоях доступа к памяти (fault reports), хотя адрес был корректным.

  • Гонка условий (Race Condition): Оказалось, существует редкий сценарий «гонки» при переходе адресного пространства с 64КБ страницы обратно на 4КБ страницы. Процессы разметки (mapping) и освобождения (unmapping/unref) страниц могли конфликтовать во времени.
  • Повреждение записей: Процедура освобождения 4КБ страниц могла некорректно помечать запись в таблице больших страниц (LPTE) как недействительную, даже если в это время туда уже была записана валидная 64КБ страница. Это приводило к «странному поведению» и падениям.

Исправление уже в пути

Разработчик Дэвид Эрли (David Airlie) оперативно подготовил патч для драйвера Nouveau, который решает проблему.

  • Суть исправления: Патч вводит дополнительное отслеживание (tracking) для записей LPTE. Теперь система будет «знать», была ли на запись ссылка (reference) после того, как она стала валидной, и не будет её бездумно сбрасывать.
  • Масштаб изменений: Для корректного учёта в условиях, когда освобождение памяти может задерживаться, механизм отслеживания был расширен до 32 бит.

Что дальше? Временное отключение и перспективы

Пока патч не попадёт в основное ядро, поддержка больших страниц в пользовательской части (драйвер NVK в Mesa) будет отключена. Это — стандартная и правильная практика: лучше временно отключить функцию, чем оставлять систему нестабильной.

  • Сроки интеграции: С выпуском Linux 6.19 через полторы недели, маловероятно, что патч успеют включить именно в этот релиз. Однако, как отмечено в коммите, исправление уже помечено для обратного портирования (back-porting) в стабильные ветки ядра, как только оно попадёт в основную линию (mainline). Это значит, что пользователям не придётся ждать выхода Linux 6.20.
  • Значение для пользователей: Эта история — отличный пример зрелости процесса разработки открытого стека. Функция была протестирована, ошибка обнаружена, исправление разработано и будет развёрнуто. Как только патч будет принят, поддержка больших страниц (а с ней и потенциальный прирост производительности за счёт сжатия) вернётся в NVK, делая открытый драйвер ещё более конкурентоспособным.

Несмотря на временную неудачу, общее направление ясно: открытый стек для NVIDIA (Nouveau + NVK) продолжает наращивать функциональность и оптимизироваться.

Оригинальный патч Дэвида Эрли можно найти в рассылке разработчиков Nouveau. Ждём его скорейшего принятия!