Vor einem Jahr gab Red Hat bekanntzu ihrer Arbeit an einem neuen Open-Source-Treiber zur Verwaltung von NVIDIA-GPUs auf Linux-Systemen,Neu". Im Gegensatz zu seinem Vorgänger Nouveau verlässt sich Nova darauf, Initialisierungs- und Steuerungsvorgänge an einen GSP-Mikrocontroller (GPU System Processor) zu delegieren, der in die Grafikkarte selbst integriert ist.
Und jetzt, innerhalb weniger Monate (im Gegensatz zu anderen neuen Projekten), scheint der Treiber ausgereift genug zu sein, um als Patch-Set zur Integration in den Linux 6.15-Kernel vorgeschlagen zu werden, da dies die erste Version des Treibers unter Linux ist.
Nova, es ist konzipiert als Linux-Kernelmodul, welches auf dem DRM-Subsystem basiert um die Interaktion mit der GPU vom Benutzerbereich aus zu verwalten. Seine Entwicklung wird als Weiterentwicklung von Nouveau angesehen, mit dem Hauptunterschied, dass es ausschließlich auf GPUs mit GSP-Firmware ausgerichtet ist, die Modelle der NVIDIA GeForce RTX 2000-Serie abdeckt, die auf der Turing-Mikroarchitektur basieren.
Unterschiede zu Nouveau und Vorteile von Nova
Nova versucht, strukturelle Probleme des Nouveau zu lösen, was eine umfassende Überarbeitung in Bereichen wie Speicherverwaltung (VMM/MMU) und Sperren im Code erfordert. Im Gegensatz zu Nouveau nutzt Nova die GSP-Firmware von NVIDIA, um die GPU-Initialisierung und -Steuerung zu vereinfachen, die Codekomplexität zu reduzieren und die Handhabung älterer Karten überflüssig zu machen.
Der Nova Code Es ist in Rust geschrieben, eine Sprache, die nicht nur die Sicherheit durch Minimierung von Fehlern im Speichermanagement verbessert, sondern auch die Erstellung wiederverwendbarer Ebenen und Abstraktionen für die Entwicklung anderer Treiber ermöglicht.
Das Projekt Es wird von verschiedenen parallelen Initiativen unterstützt, wie zum Beispiel rust-device zur Erstellung von Treibern, rust-pci für die Interaktion mit dem PCI-Bus und rust-drm zur Integration mit DRM- und GEM-Subsystemen. Diese Tools werden auch bei der Entwicklung von drm-asahi verwendet, dem Rust-Treiber für Apple M1- und M2-GPUs, was auf eine Konvergenz in der Infrastruktur der in Rust geschriebenen Grafiktreiber hindeutet.
Der Gebrauch der Sprache Rost in dieser Entwicklung ist kein Zufall, da Rust Mechanismen bietet, die die Überprüfung und das Refactoring erleichtern, was zu einer höheren Projektstabilität beiträgt. Die Übernahme dieser Sprache in den Linux-Kernel ist eine Reaktion auf eine umfassendere Strategie, die darauf abzielt, das Schreiben von Modulen zu modernisieren und die Entwicklung für neue Mitwirkende zugänglicher zu machen.
Dies ist nicht die einzige laufende Anstrengung, Rust in den Kernel zu integrieren. Derzeit werden in dieser Sprache weitere Treiber und Systeme entwickelt, beispielsweise der Apple AGX GPU-Treiber, NVMe-Speicherunterstützung, das PuzzleFS-Dateisystem und verschiedene Sicherheits- und Geräteverwaltungsimplementierungen. Der Trend zu Rust gewinnt im Linux-Ökosystem weiter an Dynamik und markiert einen bedeutenden Wandel in der Art und Weise, wie Sicherheit und Stabilität bei der Entwicklung von Betriebssystemkerneln berücksichtigt werden.
Umsetzungsphasen
Derzeit Nova befindet sich in der ersten Phase der Umsetzung, integrierte nova-core, ein Modul mit ungefähr 400 Codezeilen, das die für die Kommunikation mit der GSP-Firmware erforderlichen Abstraktionen erstellt. Neben Nova-Core wurden auch wichtige Links für die Integration mit der NVIDIA-Firmware hinzugefügt.
Es lohnt sich das zu erwähnen, Nova sollte ursprünglich auf Linux 6.14 erscheinen mit einem Nova-Core-Modul, das aus 232 Zeilen Code besteht, aber am Ende wurde es nicht aufgenommen, weil Greg Kroah-Hartman einige Details erwähnte das musste poliert werden.
Mit der neuen Bestätigung, dass es nun aufgenommen wird, Nun geht der Controller zu den nächsten Phasen über in dem Folgendes hinzugefügt werden soll:
- nova-drm: ein DRM-Treiber (Direct Rendering Manager) zur Verwaltung der Interaktion mit der GPU aus dem Benutzerbereich.
- VFIO mit vGPU-Manager: ermöglicht die Verwendung virtueller NVIDIA-GPUs in Virtualisierungsumgebungen.
Abschließend ist es wichtig zu klären, dass Nova eIm aktuellen Zustand handelt es sich nicht um einen funktionsfähigen Controller und dass die Patches gesendet Sie stellen lediglich die Grundlage für den Beginn der Controller-Entwicklung dar, das heißt, der Code legt den Grundstein für die zukünftige Entwicklung.