avatarcommunity
Linux1 год назад

Red Hat анонсирует Nova: новый драйвер Nvidia, написанный на Rust

Возможно, он заменит nouveau

Команда разработчиков под руководством Даниэло Крумриха из Red Hat объявила о старте работы над проектом Nova. Nova — драйвер для видеокарт от Nvidia, написанный на языке программирования Rust. В долгосрочной перспективе Nova предполагается использовать в качестве преемника Nouveau для видеокарт, основанных на прошивке GSP.

***

Nova в конечном итоге стремится стать современным драйвером NVIDIA Linux DRM с открытым исходным кодом для графических процессоров Turing и новее (серия RTX 2000), где есть поддержка системного процессора GPU (GSP). Драйвер Nouveau DRM недавно добавил дополнительную поддержку GSP - или обязательную поддержку, начиная с последней серии RTX 40 - в то время как Nova будет современной заменой, написанной на Rust и без багажа Nouveau, который накопился за годы поддержки графических процессоров NVIDIA, начиная с его ранних дней.

Одна из причин, по которой Red Hat задумалась о преемнике Nouveau, заключается в том, что основной мейнтейнер Nouveau ушел в отставку.

Даниэло отметил, что в этом проекте они хотят работать над упрощенным (но современным) драйвером по сравнению с Nouveau:

  В Nova мы видим возможность значительно снизить сложность драйвера по сравнению с Nouveau по двум причинам. Во-первых, историческая архитектура Nouveau, особенно вокруг nvif/nvkm, довольно сложна и негибка и требует серьезной переработки для решения некоторых проблем (таких как иерархия блокировки в коде VMM/MMU для VM_BIND в настоящее время решается обходным путем), во-вторых, с драйвером, работающим только с GSP, нет необходимости поддерживать совместимость с кодом до GSP.
Danilo Krummrich

Конечно, рассматривая его как амбициозный проект, у него есть свои заминки, главная из которых:

При выборе Rust первой проблемой, с которой приходится иметь дело, являются отсутствующие абстракции привязки C для интегральной инфраструктуры ядра (например, абстракции устройств / драйверов). Так как это немного похоже на проблему курицы и яйца - нам нужен пользователь для вышестоящих абстракций, но нам также нужны абстракции для создания драйвера - мы хотим разработать Nova в основной ветке разработки и начать только с заглушки драйвера, которая использует только некоторые базовые абстракции Rust.
Danilo Krummrich

Все это звучит довольно круто, но разработчикам предстоит нелегкая работа по созданию полноценного драйвера на основе Rust. Но улучшения в области сохранения памяти, надежности и производительности, которые дает Rust, того стоят. 

8комментариев