Il y a un an, Red Hat annonçaità leur travail sur un nouveau pilote open source pour la gestion des GPU NVIDIA sur les systèmes Linux,Nouveau". Contrairement à son prédécesseur, Nouveau, Nova s'appuie sur la délégation des opérations d'initialisation et de contrôle à un microcontrôleur GSP (GPU System Processor) intégré à la carte graphique elle-même.
Et maintenant, en quelques mois (contrairement à d'autres nouveaux projets), il semble que le pilote ait acquis suffisamment de maturité pour être proposé comme un ensemble de correctifs à intégrer dans le noyau Linux 6.15, qui est la version initiale du pilote sur Linux.
Nova, c'est conçu comme un module de noyau Linux, qui s'appuie sur le sous-système DRM pour gérer l'interaction avec le GPU depuis l'espace utilisateur. Son développement est considéré comme une évolution de Nouveau, la principale différence étant qu'il cible exclusivement les GPU avec le firmware GSP, qui couvre les modèles de la série NVIDIA GeForce RTX 2000 basés sur la microarchitecture Turing.
Différences avec Nouveau et avantages de Nova
La Nouvelle cherche à résoudre les problèmes structurels de Nouveau, ce qui nécessite une refonte majeure dans des domaines tels que la gestion de la mémoire (VMM/MMU) et les verrous dans le code. Contrairement à Nouveau, Nova exploite le firmware GSP de NVIDIA pour simplifier l'initialisation et le contrôle du GPU, réduisant ainsi la complexité du code et éliminant le besoin de gérer des cartes plus anciennes.
Le Nova Code c'est écrit en rouille, un langage qui non seulement améliore la sécurité en minimisant les erreurs dans la gestion de la mémoire, mais permet également la création de couches et d'abstractions réutilisables pour le développement d'autres pilotes.
Le projet Il est soutenu par diverses initiatives parallèles, telles que rust-device pour créer des pilotes, rust-pci pour l'interaction avec le bus PCI et rust-drm pour l'intégration avec les sous-systèmes DRM et GEM. Ces outils sont également utilisés dans le développement de drm-asahi, le pilote Rust pour les GPU Apple M1 et M2, suggérant une convergence dans l'infrastructure des pilotes graphiques écrits en Rust.
L'utilisation du langage La présence de rouille dans ce développement n’est pas une coïncidence, car Rust offre des mécanismes qui facilitent la révision et la refactorisation, ce qui contribue à une plus grande stabilité du projet. L'adoption de ce langage dans le noyau Linux répond à une stratégie plus large qui vise à moderniser l'écriture des modules et à rendre le développement plus accessible aux nouveaux contributeurs.
Ce n’est pas le seul effort en cours pour intégrer Rust dans le noyau. D'autres pilotes et systèmes sont actuellement en cours de développement dans ce langage, tels que le pilote GPU Apple AGX, la prise en charge du stockage NVMe, le système de fichiers PuzzleFS et diverses implémentations de sécurité et de gestion des périphériques. La tendance vers Rust continue de prendre de l’ampleur dans l’écosystème Linux, marquant un changement significatif dans la manière dont la sécurité et la stabilité sont abordées dans le développement du noyau du système d’exploitation.
Phases de mise en œuvre
Actuellement, Nova est dans sa première phase de mise en œuvre, intègre nova-core, un module avec environ 400 lignes de code qui établit les abstractions nécessaires pour communiquer avec le firmware GSP. En plus de nova-core, des liens essentiels pour l'intégration avec le firmware NVIDIA ont également été ajoutés.
Il est important de mentionner que, Nova était initialement prévu pour arriver sur Linux 6.14 avec un module nova-core composé de 232 lignes de code, mais au final il n'a pas été inclus car Greg Kroah-Hartman a mentionné certains détails qui avait besoin d'être poli.
Avec la nouvelle confirmation qu'il sera désormais inclus, Le contrôleur va maintenant passer aux phases suivantes dans lequel il est prévu d'ajouter :
- nova-drm : un pilote DRM (Direct Rendering Manager) pour gérer l'interaction avec le GPU depuis l'espace utilisateur.
- VFIO avec gestionnaire vGPU : permettra l'utilisation de GPU virtuels NVIDIA dans des environnements de virtualisation.
Enfin, il est important de préciser que Nova eDans son état actuel, il ne s'agit pas d'un contrôleur fonctionnel et que le patchs envoyés Ils ne constituent que la base pour démarrer le développement du contrôleur, c'est-à-dire que c'est le code qui posera les bases du développement futur.