In preparation for the release of Linux 6.15 at the end of May, a new driver called Nova for NVIDIA GPUs written in Rust is set to be included. The first stage of development involved transferring the nova-core frame to the nucleus, which contains around 400 lines of code and introduces basic abstractions over GSP firmware software interfaces. The patch also includes necessary bindings for driver operation with firmware.
Next in line is the inclusion of Nova-DRM (Direct Rendering Manager) to facilitate interaction with the GPU from user space, along with vfio, a driver with a vgpu manager allowing the use of virtual NVIDIA GPUs in virtualization systems.
The Nova driver is specifically designed for NVIDIA GPUs equipped with GSP-flashes, common in the GeForce RTX 2000 series based on the Turing microarchitecture. Long-term plans involve Nova replacing the Nouveau driver for GPUs with GSP support.
Developed by RED HAT, the goal of the Nova project is to streamline the complexities associated with the Nouveau driver. By leveraging handlers provided by GSP firmware and eliminating the overhead to support older GPUs, significant simplification is achieved.
Nova aims to address architectural issues present in Nouveau, which require extensive code processing, such as problems with VMM/MMU block coding. The choice of Rust as the programming language is intended to minimize memory-related errors and facilitate driver development.
Aside from Nova for the Linux kernel, drivers for Apple AGX GPUs (DRM-SAHI), NVMe (RNvme), and Android Binder are also being developed in Rust. Additionally, Cisco is working on a Rust file system driver called PuzzleFS for the Linux kernel. Several drivers, including a QR code generator for emergency stops, a block driver, and a PHY interface driver, have already been integrated into the Linux kernel.
Rust promotion goals in the Linux core:
- Writing new code in Rust will reduce the risk of memory errors, race conditions, and logical errors.