Год назад Red Hat объявилаза их работу над новым драйвером с открытым исходным кодом для управления графическими процессорами NVIDIA в системах Linux,Новый". В отличие от своего предшественника Nouveau, Nova полагается на делегирование операций инициализации и управления микроконтроллеру GSP (GPU System Processor), интегрированному в саму видеокарту.
И теперь, всего за несколько месяцев (в отличие от других новых проектов), похоже, драйвер обрел достаточную зрелость, чтобы быть предложенным в качестве набора исправлений для интеграции в ядро Linux 6.15, поскольку это первая версия драйвера для Linux.
Нова, это разработан как модуль ядра Linux, которая опирается на подсистему DRM для управления взаимодействием с графическим процессором из пользовательского пространства. Его разработка рассматривается как эволюция Nouveau, ключевым отличием которой является то, что он нацелен исключительно на графические процессоры с прошивкой GSP, которая охватывает модели серии NVIDIA GeForce RTX 2000 на базе микроархитектуры Turing.
Различия с Nouveau и преимущества Nova
Новая звезда стремится решить структурные проблемы модерна, что требует серьезной переработки в таких областях, как управление памятью (VMM/MMU) и блокировки в коде. В отличие от Nouveau, Nova использует прошивку NVIDIA GSP для упрощения инициализации и управления графическим процессором, снижая сложность кода и устраняя необходимость поддержки старых карт.
Код Новы это написано на Rust, язык, который не только повышает безопасность за счет минимизации ошибок в управлении памятью, но и позволяет создавать повторно используемые слои и абстракции для разработки других драйверов.
В рамках проекта Его поддерживают различные параллельные инициативы, такие как rust-device для создания драйверов, rust-pci для взаимодействия с шиной PCI и rust-drm для интеграции с подсистемами DRM и GEM. Эти инструменты также используются при разработке drm-asahi, драйвера Rust для графических процессоров Apple M1 и M2, что свидетельствует о конвергенции в инфраструктуре графических драйверов, написанных на Rust.
Использование языка Ржавчина в этом развитии не является совпадением, поскольку Rust предлагает механизмы, облегчающие проверку и рефакторинг, что способствует большей стабильности проекта. Внедрение этого языка в ядро Linux соответствует более широкой стратегии, направленной на модернизацию написания модулей и повышение доступности разработки для новых участников.
Это не единственная продолжающаяся попытка интегрировать Rust в ядро. В настоящее время на этом языке разрабатываются другие драйверы и системы, такие как драйвер графического процессора Apple AGX, поддержка хранилища NVMe, файловая система PuzzleFS, а также различные реализации безопасности и управления устройствами. Тенденция к использованию Rust продолжает набирать обороты в экосистеме Linux, знаменуя собой существенный сдвиг в подходе к обеспечению безопасности и стабильности при разработке ядра операционной системы.
Фазы внедрения
В настоящее время, Nova находится на первом этапе внедрения, включил nova-core, модуль с приблизительно 400 строками кода, который устанавливает абстракции, необходимые для взаимодействия с прошивкой GSP. Наряду с nova-core также добавлены необходимые ссылки для интеграции с прошивкой NVIDIA.
Стоит отметить, что Первоначально планировалось, что Nova появится на Linux 6.14. с модулем nova-core, состоящим из 232 строк кода, но в итоге он не был включен, потому что Грег Кроа-Хартман упомянул некоторые детали что нуждалось в полировке.
С новым подтверждением того, что теперь он будет включен, Теперь контроллер перейдет к следующим фазам. в который планируется добавить:
- нова-drm: драйвер DRM (Direct Rendering Manager) для управления взаимодействием с графическим процессором из пользовательского пространства.
- VFIO с менеджером vGPU: позволит использовать виртуальные графические процессоры NVIDIA в средах виртуализации.
Наконец, важно пояснить, что Nova eВ своем текущем состоянии он не является функциональным контроллером. и что исправления отправлены Они являются лишь основой для начала разработки контроллера, то есть именно код заложит основу для будущей разработки.