Рік тому Red Hat анонсувалаїх роботі над новим драйвером з відкритим кодом для керування графічними процесорами NVIDIA в системах Linux,Новий». На відміну від свого попередника, Nouveau, Nova покладається на делегування операцій ініціалізації та керування мікроконтролеру GSP (GPU System Processor), інтегрованому в саму відеокарту.
І тепер, за кілька місяців (на відміну від інших нових проектів), здається, що драйвер набув достатньої зрілості, щоб пропонувати його як набір виправлень для інтеграції в ядро Linux 6.15, оскільки це початкова версія драйвера для Linux.
Нова, це так розроблений як модуль ядра Linux, яка спирається на підсистему DRM для керування взаємодією з GPU з простору користувача. Її розробка розглядається як еволюція Nouveau, з ключовою відмінністю в тому, що вона націлена виключно на графічні процесори з прошивкою GSP, яка охоплює моделі серії NVIDIA GeForce RTX 2000 на основі мікроархітектури Turing.
Відмінності від Nouveau і переваги Nova
Нова зірка прагне вирішити структурні проблеми модерну, що вимагає капітального ремонту в таких сферах, як керування пам’яттю (VMM/MMU) і блокування коду. На відміну від Nouveau, Nova використовує вбудоване програмне забезпечення NVIDIA GSP для спрощення ініціалізації та контролю GPU, зменшуючи складність коду та усуваючи потребу працювати зі старими картами.
Код Нова це написано 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 рядків коду, але врешті його не включили, оскільки Грег Кроа-Хартман згадав деякі деталі які потребували полірування.
З новим підтвердженням того, що він тепер буде включений, Тепер контролер переходить до наступних етапів в якому планується додати:
- nova-drm: драйвер DRM (Direct Rendering Manager) для керування взаємодією з GPU з простору користувача.
- VFIO з менеджером vGPU: дозволить використовувати віртуальні графічні процесори NVIDIA в середовищах віртуалізації.
Нарешті, важливо пояснити, що Nova eУ своєму поточному стані він не є функціональним контролером і що патчів надіслано Вони є лише основою для початку розробки контролера, тобто саме код ляже в основу майбутнього розвитку.