Red Hat's Long, Rust'ed Road Ahead For Nova As Nouveau Driver Successor
Red Hat's display driver team has recently been devising plans for Nova, a new to-be-developed Linux DRM kernel driver written in Rust for open-source NVIDIA graphics support as the successor/replacement to Nouveau for newer NVIDIA GPU generations supporting the GPU System Processor (GSP). Making this effort all the more involved is being written in Rust at a time when various kernel abstractions are still being devised and not yet upstreamed.
Nova is ultimately aiming to be a modern open-source NVIDIA Linux DRM driver for Turing GPUs and newer (RTX 2000 series) where there is the GPU System Processor (GSP) support. The Nouveau DRM driver recently mainlined optional support for the GSP -- or mandatory support beginning with the latest RTX 40 series -- while Nova will be a modern replacement, written in Rust, and without the Nouveau baggage that's built up over the years in supporting NVIDIA GPUs going back to its early days.
This Rust-based GSP-only driver is promising looking out well into the future for hopefully being more performant and capable than the Nouveau driver, similar to the forward-focused Intel Xe driver doing away with all the cruft built up over the years in the i915 Direct Rendering Manager code.
By going with Rust, the Red Hat developers involved hope it will boast better memory safety and in turn better maintainability and a lower barrier for new developers to become involved.
Focusing just on GSP-capable GPUs also simplifies the driver development with much of the hardware initialization/management left up to the GSP and its firmware/microcode rather than being programmed by the device driver. The Nouveau driver will continue to exist for those on older NVIDIA graphics cards.
While there is the Apple Silicon DRM driver being developed by the Asahi crew in Rust, that too is out-of-tree. The challenge with no upstream Rust DRM driver yet -- or other major full-featured Rust kernel driver -- is the lack of various abstractions. For some areas Rust kernel abstractions exist but haven't yet been upstreamed.
In beginning to work through the necessary abstractions for the Nova driver, Red Hat's Danilo Krummrich published a mailing list post entitled "Nova and staging Rust abstractions" for walking through the different Git trees with Rust abstractions for DRM, device abstractions, PCI, etc. The early stage Nova code itself continues to be developed via drm/nova on FreeDesktop.org. It will be interesting to see how Nova pans out over time.
Nova is ultimately aiming to be a modern open-source NVIDIA Linux DRM driver for Turing GPUs and newer (RTX 2000 series) where there is the GPU System Processor (GSP) support. The Nouveau DRM driver recently mainlined optional support for the GSP -- or mandatory support beginning with the latest RTX 40 series -- while Nova will be a modern replacement, written in Rust, and without the Nouveau baggage that's built up over the years in supporting NVIDIA GPUs going back to its early days.
This Rust-based GSP-only driver is promising looking out well into the future for hopefully being more performant and capable than the Nouveau driver, similar to the forward-focused Intel Xe driver doing away with all the cruft built up over the years in the i915 Direct Rendering Manager code.
By going with Rust, the Red Hat developers involved hope it will boast better memory safety and in turn better maintainability and a lower barrier for new developers to become involved.
Focusing just on GSP-capable GPUs also simplifies the driver development with much of the hardware initialization/management left up to the GSP and its firmware/microcode rather than being programmed by the device driver. The Nouveau driver will continue to exist for those on older NVIDIA graphics cards.
While there is the Apple Silicon DRM driver being developed by the Asahi crew in Rust, that too is out-of-tree. The challenge with no upstream Rust DRM driver yet -- or other major full-featured Rust kernel driver -- is the lack of various abstractions. For some areas Rust kernel abstractions exist but haven't yet been upstreamed.
In beginning to work through the necessary abstractions for the Nova driver, Red Hat's Danilo Krummrich published a mailing list post entitled "Nova and staging Rust abstractions" for walking through the different Git trees with Rust abstractions for DRM, device abstractions, PCI, etc. The early stage Nova code itself continues to be developed via drm/nova on FreeDesktop.org. It will be interesting to see how Nova pans out over time.
63 Comments