Een jaar geleden kondigde Red Hat aanop hun werk aan een nieuwe open source driver voor het beheer van NVIDIA GPU's op Linux-systemen,Nieuw". In tegenstelling tot zijn voorganger Nouveau, delegeert Nova de initialisatie- en besturingsbewerkingen aan een GSP (GPU System Processor)-microcontroller die in de grafische kaart zelf is geĆÆntegreerd.
En nu, in een kwestie van een paar maanden (in tegenstelling tot andere nieuwe projecten), lijkt het erop dat de driver voldoende volwassen is geworden om te worden voorgesteld als een set patches die moeten worden geĆÆntegreerd in de Linux 6.15-kernel. Dit is de eerste versie van de driver op Linux.
Nova, het is ontworpen als een Linux-kernelmodule, die afhankelijk is van het DRM-subsysteem om de interactie met de GPU vanuit de gebruikersruimte te beheren. De ontwikkeling ervan wordt gezien als een evolutie van Nouveau, met als belangrijkste verschil dat het uitsluitend gericht is op GPU's met GSP-firmware, die modellen uit de NVIDIA GeForce RTX 2000-serie omvat, gebaseerd op de Turing-microarchitectuur.
Verschillen met Nouveau en voordelen van Nova
Nova probeert structurele problemen van Nouveau op te lossen, wat een grote revisie vereist op gebieden als geheugenbeheer (VMM/MMU) en vergrendelingen in de code. In tegenstelling tot Nouveau maakt Nova gebruik van NVIDIA's GSP-firmware om de GPU-initialisatie en -besturing te vereenvoudigen, de codecomplexiteit te verminderen en de noodzaak om oudere kaarten te gebruiken te elimineren.
De Nova-code het is in Rust geschreven, een taal die niet alleen de beveiliging verbetert door fouten in geheugenbeheer te minimaliseren, maar ook de creatie van herbruikbare lagen en abstracties voor de ontwikkeling van andere drivers mogelijk maakt.
El proyecto Het wordt ondersteund door verschillende parallelle initiatieven, zoals rust-device voor het maken van drivers, rust-pci voor interactie met de PCI-bus en rust-drm voor integratie met DRM- en GEM-subsystemen. Deze tools worden ook gebruikt bij de ontwikkeling van drm-asahi, de Rust-driver voor Apple M1 en M2 GPU's, wat duidt op een convergentie in de infrastructuur van grafische drivers die in Rust zijn geschreven.
Het gebruik van taal Roest in deze ontwikkeling is geen toeval, omdat Rust mechanismen biedt die beoordeling en refactoring vergemakkelijken, wat bijdraagt āāaan een grotere stabiliteit van het project. De invoering van deze taal in de Linux-kernel is een onderdeel van een bredere strategie die erop gericht is het schrijven van modules te moderniseren en de ontwikkeling toegankelijker te maken voor nieuwe bijdragers.
Dit is niet de enige voortdurende inspanning om Rust in de kernel te integreren. Momenteel worden er andere drivers en systemen in deze taal ontwikkeld, zoals de Apple AGX GPU-driver, ondersteuning voor NVMe-opslag, het PuzzleFS-bestandssysteem en diverse implementaties voor beveiliging en apparaatbeheer. De trend richting Rust blijft aan kracht winnen in het Linux-ecosysteem en markeert een belangrijke verschuiving in de manier waarop beveiliging en stabiliteit worden aangepakt in de ontwikkeling van de kernel van besturingssystemen.
Implementatiefasen
nog, Nova bevindt zich in de eerste fase van de implementatie, bevatte nova-core, een module met ongeveer 400 regels code die de abstracties vastlegt die nodig zijn om te communiceren met de GSP-firmware. Naast nova-core zijn ook essentiƫle links voor integratie met NVIDIA-firmware toegevoegd.
Het is het vermelden waard dat, Nova zou oorspronkelijk op Linux 6.14 verschijnen met een nova-core module bestaande uit 232 regels code, maar uiteindelijk werd deze niet opgenomen omdat Greg Kroah-Hartman enkele details noemde dat gepolijst moest worden.
Met de nieuwe bevestiging dat het nu zal worden opgenomen, Nu gaat de controller door naar de volgende fasen waarin het de bedoeling is om toe te voegen:
- nova-drm: een DRM-driver (Direct Rendering Manager) om de interactie met de GPU vanuit de gebruikersruimte te beheren.
- VFIO met vGPU-manager: maakt het gebruik van virtuele GPU's van NVIDIA in virtualisatieomgevingen mogelijk.
Ten slotte is het belangrijk om te verduidelijken dat Nova eIn de huidige staat is het geen functionele controller en dat patches verzonden Ze vormen slechts de basis voor het starten van de ontwikkeling van de controller. Het is met andere woorden de code die de basis vormt voor toekomstige ontwikkelingen.