Die Entwicklung des NVIDIA GPU Treibers Nova für den Linux-Kernel hat begonnen.

Die Ingenieure von Red Hat haben den ersten Patch-Satz für den Linux-Kernel mit der Implementierung des Nova-Treibers zur Einfügung vorgeschlagen. Dieser Treiber ist für die Verwendung mit NVIDIA-GPUs gedacht, die mit GSP-Firmware ausgestattet sind und erstmals in der NVIDIA GeForce RTX 2000-Serie auf der Turing-Mikroarchitektur eingesetzt werden. Bei diesen GPUs werden die Initialisierungs- und Steuerungsoperationen in der Firmware implementiert und von einem separaten Mikrocontroller, dem GSP (GPU System Processor), ausgeführt. Langfristig soll Nova den Nouveau-Treiber für GPUs mit GSP-Unterstützung ersetzen.

Der neue Treiber ist in der Programmiersprache Rust geschrieben. Da die Infrastruktur zur Entwicklung von Rust-Treibern noch im Aufbau ist, wird der Code von Nova schrittweise in den Hauptkernel integriert, sobald die notwendigen Bindungen für die Sprache Rust verfügbar sind. In der ersten Phase wurde der Treiber „nova-core“ vorgeschlagen, der aus 232 Zeilen Code besteht. Nova-core implementiert eine grundlegende Abstraktionsebene über die Software-Schnittstellen der GSP-Firmwaren und stellt eine API zur Verfügung, die unabhängig von Firmware-Versionen ist.

In der nächsten Phase ist geplant, den DRM-Treiber nova-drm (Direct Rendering Manager) in den Kern zu integrieren, um mit GPUs aus dem Benutzerspeicher zu interagieren, sowie den VFIO-Treiber mit dem vGPU-Manager, der die Verwendung virtueller NVIDIA-GPUs in Virtualisierungssystemen ermöglicht.

Der Hauptgrund für die Einführung des neuen Nova-Treibers ist die Möglichkeit, die Komplikationen, die mit dem Nouveau-Treiber verbunden sind, zu vermeiden und signifikante Vereinfachungen zu erreichen, indem vorhandene Handler genutzt werden, die durch die GSP-Firmware bereitgestellt werden, und der Aufwand für die Unterstützung älterer GPUs entfällt. Nova wird auch architektonische Probleme lösen, die bei Nouveau eine umfassende Überarbeitung des Codes erfordern, wie beispielsweise Probleme mit Deadlocks im VMM/MMU-Code. Die Programmiersprache Rust wurde gewählt, um die Wahrscheinlichkeit von Fehlern bei der Arbeit mit Speicher zu verringern und um die Entwicklung eines funktionalen Treibers mit der Erstellung von Bindungen und Abstraktionen für die Treiberentwicklung in Rust zu kombinieren.

Video abspielen

Was den Fortschritt bei der Integration von Rust-basierten Treiberentwicklungsfunktionen in den Linux-Kernel betrifft, so wurden in die Version 6.14 Rust-Bindings für PCI, Plattformen, Open Firmware, Zeichengeräte und einige Ein-/Ausgabefunktionen aufgenommen. Greg Kroah-Hartman, der für die Unterstützung der stabilen Kernel-Version verantwortlich ist, bezeichnete im Pull-Request zur Aktualisierung der Treiber für den Kernel 6.14 den aktuellen Stand als "fast bereit für die Entwicklung eines echten Treibers in Rust".

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster