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
