Les ingénieurs de Red Hat ont proposé d'inclure dans le kernel Linux le premier ensemble de patchs pour la mise en œuvre du pilote Nova. Ce pilote est conçu pour être utilisé avec les GPU NVIDIA équipés de firmwares GSP, utilisés à partir de la série NVIDIA GeForce RTX 2000 basée sur l'architecture Turing. Dans ces GPU, les opérations d'initialisation et de gestion sont réalisées dans le firmware et exécutées par un microcontrôleur GSP (GPU System Processor). Il est prévu qu'à long terme, Nova remplace le pilote Nouveau pour les GPU prenant en charge le GSP.
Le nouveau pilote est écrit en Rust et, comme l'infrastructure pour le développement de pilotes Rust est encore en cours de développement, le code de Nova devrait être progressivement intégré dans le noyau principal, au fur et à mesure que les liaisons nécessaires pour le langage Rust apparaissent. Dans un premier temps, le pilote « nova-core », composé de 232 lignes de code, est proposé pour inclusion dans le noyau. Nova-core met en œuvre un niveau d'abstraction de base au-dessus des interfaces logicielles des firmwares GSP et fournit une API indépendante des versions de firmware.
À la prochaine étape, il est prévu d'inclure dans le noyau le pilote DRM nova-drm (Direct Rendering Manager) pour interagir avec les GPU depuis l'espace utilisateur, ainsi qu'un pilote VFIO avec un gestionnaire vGPU, permettant d'utiliser des GPU virtuels NVIDIA dans les systèmes de virtualisation.
La raison principale de la promotion du nouveau pilote Nova est la possibilité de se débarrasser des complications liées au pilote Nouveau et d'obtenir une simplification significative grâce à l'utilisation des gestionnaires fournis par le firmware GSP et à l'abandon du support des anciens GPU. Nova permettra également de résoudre des problèmes architecturaux dans Nouveau qui nécessitent une réécriture substantielle de la base de code, par exemple, des problèmes de blocage dans le code VMM/MMU. Le langage Rust a été choisi pour réduire la probabilité d'erreurs de gestion de la mémoire, ainsi que pour permettre de concilier le travail sur un pilote opérationnel avec la création de liaisons et d'abstractions pour le développement de pilotes en Rust.

En ce qui concerne les progrès de l'ajout dans le noyau Linux de fonctionnalités pour le développement de pilotes en Rust, des liaisons Rust pour PCI, les plateformes, Open Firmware, les périphériques de caractères et certaines fonctions d'entrée/sortie ont été intégrées dans la branche 6.14. Greg Kroah-Hartman, responsable du support de la branche stable du noyau Linux, a décrit l'état actuel dans une demande de tirage pour la mise à jour des pilotes du noyau 6.14 comme étant « presque prêt pour l'écriture d'un véritable pilote en Rust ».
Source : opennet.ru
