The promotion of the Nova driver for NVIDIA GPUs in the Linux kernel has begun.

Engineers from Red Hat have proposed the inclusion of the first set of patches implementing the Nova driver into the Linux kernel. This driver is designed for use with NVIDIA GPUs equipped with GSP firmware, starting from the NVIDIA GeForce RTX 2000 series based on the Turing microarchitecture. In such GPUs, initialization and management operations are implemented in firmware and are executed by a separate GSP (GPU System Processor) microcontroller. It is anticipated that Nova will eventually replace the Nouveau driver for GPUs that support GSP.

The new driver is written in Rust, and as the infrastructure for developing Rust drivers is still under development, the Nova code is intended to be gradually integrated into the main kernel as necessary bindings for Rust become available. In the first phase, the 'nova-core' driver, consisting of 232 lines of code, is proposed for inclusion in the kernel. Nova-core implements a basic level of abstractions over GSP firmware interfaces and provides an API that is version-independent.

In the next stage, the kernel plans to include the nova-drm (Direct Rendering Manager) DRM driver for interaction with the GPU from user space, as well as a VFIO driver with a vGPU manager, allowing the use of virtual NVIDIA GPUs in virtualization systems.

The main reason for promoting the new Nova driver is the opportunity to eliminate the complications inherent in the Nouveau driver and to achieve significant simplification by utilizing ready-made handlers provided by GSP firmware and discarding the burden of supporting older GPUs. Nova will also help to address architectural issues in Nouveau that require substantial codebase rewrites, such as locking issues in the VMM/MMU code. Rust was chosen to reduce the likelihood of memory-related errors and to enable the development of a working driver alongside the creation of bindings and abstractions for driver development in Rust.

Play video

Regarding the progress of adding Rust language driver development capabilities to the Linux kernel, the 6.14 branch has accepted Rust bindings for PCI, platforms, Open Firmware, character devices, and some input/output functions. Greg Kroah-Hartman, who is responsible for the stable branch of the Linux kernel, characterized the current state in a pull request updating drivers for kernel 6.14 as "almost ready for writing a real Rust driver."

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster