Ingenieurs van Red Hat hebben een eerste set patches voorgesteld voor opname in de Linux-kernel, met de implementatie van de Nova-driver. Deze driver is ontworpen voor gebruik met NVIDIA GPU's die zijn uitgerust met GSP-firmware, die wordt gebruikt vanaf de NVIDIA GeForce RTX 2000-serie, gebaseerd op de Turing-microarchitectuur. In dergelijke GPU's zijn de initialisatie- en beheersoperaties in de firmware geĆÆmplementeerd en worden ze uitgevoerd door een aparte microcontroller genaamd GSP (GPU System Processor). Men verwacht dat Nova op de lange termijn de Nouveau-driver voor GPU's met GSP-ondersteuning zal vervangen.
De nieuwe driver is geschreven in de programmeertaal Rust en aangezien de infrastructuur voor het ontwikkelen van Rust-drivers nog in ontwikkeling is, is het de bedoeling om de Nova-code stapsgewijs in de hoofdversie van de kernel op te nemen, naarmate de benodigde bindings voor de taal Rust beschikbaar komen. In de eerste fase is de driver "nova-core" voorgesteld voor opname in de kernel, die uit 232 regels code bestaat. Nova-core implementeert een basisniveau van abstractie bovenop de software-interfaces van de GSP-firmware en biedt een API die onafhankelijk is van de versies van de firmware.
In de volgende fase is het de bedoeling om de DRM-driver nova-drm (Direct Rendering Manager) in de kernel op te nemen, voor interactie met GPU's vanuit de gebruikersruimte, evenals de VFIO-driver met een vGPU-manager, die het mogelijk maakt om virtuele NVIDIA GPU's in virtualisatiesystemen te gebruiken.
De belangrijkste reden voor de promotie van de nieuwe Nova-driver is de mogelijkheid om de complicaties die inherent zijn aan de Nouveau-driver te vermijden en aanzienlijke vereenvoudiging te bereiken door gebruik te maken van de bestaande handlers die door de GSP-firmware worden geleverd en het gewicht van het ondersteunen van oude GPU's af te schudden. Nova zal ook architectonische problemen oplossen die in Nouveau aanzienlijke herziening van de codebasis vereisen, bijvoorbeeld problemen met locks in de VMM/MMU-code. De taal Rust is gekozen om de kans op fouten bij geheugenbeheer te verkleinen, en om de samenwerking aan een werkende driver te combineren met het creƫren van bindings en abstracties voor de ontwikkeling van drivers in Rust.

Wat betreft de voortgang van de toevoeging van mogelijkheden voor het ontwikkelen van stuurprogramma's in de taal Rust aan de Linux-kernel, zijn in de tak 6.14 Rust-wrapper voor PCI, platforms, Open Firmware, letterlijke apparaten en enkele invoer-/uitvoerfuncties opgenomen. Greg Kroah-Hartman, verantwoordelijk voor de ondersteuning van de stabiele tak van de Linux-kernel, heeft in de pull request met updates voor stuurprogramma's voor kernel 6.14 de huidige staat gekarakteriseerd als "bijna gereed voor het schrijven van een echt stuurprogramma in Rust."
Bron: opennet.ru
