Red Hat engineers have been working on Nova as an open-source driver successor to the Nouveau driver for upstream NVIDIA GPU support within the Linux kernel that can be used with the Mesa OpenGL/Vulkan drivers. Unlike the prior larger RFC patch series, sent out to the Linux kernel mailing list today were some small patches for introducing “NOVA-Core” that would serve as the initial base for this modern NVIDIA Linux kernel DRM driver. Over time and succeeding kernel releases, the NOVA code would be built up until ultimately becoming a usable state for end-users.
As a reminder this modern NOVA driver is about providing a successor to Nouveau and an emphasis on being written in the Rust programming language. NOVA also is designed to rely on the NVIDIA GPU System Processor (GSP) for supporting RTX 20 “Turing” GPUs and newer with foregoing older NVIDIA GPUs.
Danilo Krummrich posted on Friday a set of two patches for providing an initial driver stub of the “NOVA-Core” code. Krummrich explains in the patch series:
“nova-core is intended to serve as a common base for nova-drm (the corresponding DRM driver) and the vGPU manager VFIO driver, serving as a hard- and firmware abstraction layer for GSP-based NVIDIA GPUs.
The Nova project, including nova-core and nova-drm, in the long term, is intended to serve as the successor of Nouveau for all GSP-based GPUs.
…
In order to avoid the chicken and egg problem to require a user to upstream Rust abstractions, but at the same time require the Rust abstractions to implement the driver, nova-core kicks off as a driver stub and is subsequently developed upstream.”
This nova-core patch series follows more Rust platform and PCI abstractions being upstreamed for Linux 6.14 and beginning to make it more suitable for actual Rust hardware drivers in the upstream kernel.
The Kconfig option on the proposed patch series makes it very clear the experimental/early state of NOVA-Core:
“Choose this if you want to build the Nova Core driver for Nvidia GSP-based GPUs.
This driver is work in progress and may not be functional.”
In its early stage form, the nova-core driver is less than 300 lines of new code… Again, not a functioning driver yet but just largely stubbing out functions and laying the base for building it up moving forward.
We’ll see if there’s enough interest in getting the code into the mainline kernel in the next cycle or if it’s still going to be a further drawn out process before beginning to see bits of NOVA land upstream.