Код драйвера написан на языке Rust и дополнительно использует несколько прослоек для разработки видеодрайверов на данном языке, ещё не принятых в основной состав ядра. Например, в драйвере задействован набор абстракций для построения драйверов из ветки rust-device, компоненты для работы с шиной PCI из ветки rust-pci и обвязки для подсистем DRM и GEM из ветки rust-drm, используемой при разработке Rust-драйвера drm-asahi для GPU чипов Apple M1 и M2. Предполагается, что применение языка Rust повысит безопасность и надёжность драйвера из-за снижения вероятности совершения ошибок при работе с памятью и позволит совместить работу над видеодрайвером с развитием компонентов, обвязок и абстракций для разработки драйверов на Rust.
Среди причин для создания нового драйвера также упоминается возможность добиться значительного упрощения по сравнению с драйвером Nouveau, благодаря задействованию многих готовых обработчиков, предоставляемых прошивкой GSP. Из-за необходимости поддержки старых GPU NVIDIA код драйвера Nouveau излишне усложнён и негибок, а для решения имеющихся в драйвере Nouveau проблем, например, связанных с блокировками в коде VMM/MMU, требуется существенная переработка кодовой базы.
В развиваемом с нуля новом драйвере Nova имеется возможность изначально избавиться от подобных пробоем и усложнений, так как можно обойтись без поддержки многих абстракций на стороне драйвера, которые в новых GPU NVIDIA уже реализованы на уровне прошивки. В Nouveau приходится совмещать код для поддержки старых и новых GPU, и оставление в драйвере Nova только поддержки GPU на базе GSP даст возможность отбросить весь груз по обеспечению совместимости с кодом для работы со старыми GPU.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60821