一年前,红帽宣布他们致力于开发用于在 Linux 系统上管理 NVIDIA GPU 的新开源驱动程序,新的”。与其前身 Nouveau 不同,Nova 依赖于将初始化和控制操作委托给集成在显卡本身中的 GSP(GPU 系统处理器)微控制器。
而现在,仅用了几个月的时间(与其他新项目不同),该驱动程序似乎已经足够成熟,可以作为一组补丁提出并集成到 Linux 6.15 内核中,这是 Linux 上该驱动程序的初始版本。
Nova,是的 设计为 Linux 内核模块, 依赖于 DRM 子系统 从用户空间管理与 GPU 的交互。它的开发被视为 Nouveau 的演变,关键区别在于它专门针对具有 GSP 固件的 GPU,涵盖基于 Turing 微架构的 NVIDIA GeForce RTX 2000 系列型号。
与 Nouveau 的区别以及 Nova 的优势
新星 寻求解决 Nouveau 的结构性问题,这需要对内存管理(VMM/MMU)和代码锁等领域进行重大改革。与 Nouveau 不同,Nova 利用 NVIDIA 的 GSP 固件简化 GPU 初始化和控制,降低代码复杂性并消除了处理旧卡的需要。
新星密码 它是用Rust写的,这种语言不仅可以通过最大限度地减少内存管理中的错误来提高安全性,而且还允许创建可重复使用的层和抽象来开发其他驱动程序。
萨尔瓦多PROYECTO 它得到了各种并行计划的支持,例如 rust-device 创建驱动程序, rust-pci 用于与 PCI 总线和 rust-drm 交互 用于与 DRM 和 GEM 子系统集成。这些工具也用于 Apple M1 和 M2 GPU 的 Rust 驱动程序 drm-asahi 的开发,这表明用 Rust 编写的图形驱动程序基础设施已经趋于融合。
语言的使用 Rust 的这种发展并非巧合,因为 Rust 提供了方便审查和重构的机制,从而有助于提高项目稳定性。 Linux 内核采用这种语言符合一项更广泛的战略,即寻求使模块编写现代化,并使新的贡献者更容易进行开发。
这并不是将 Rust 集成到内核的唯一正在进行的努力。目前正在使用该语言开发其他驱动程序和系统,例如 Apple AGX GPU 驱动程序、NVMe 存储支持、PuzzleFS 文件系统以及各种安全和设备管理实现。 Rust 的趋势在 Linux 生态系统中持续获得发展势头,标志着操作系统内核开发在解决安全性和稳定性问题的方式发生了重大转变。
实施阶段
目前, Nova 正处于实施的第一阶段,包含了 nova-core,一个大约有 400 行代码的模块,用于建立与 GSP 固件通信所需的抽象。除了 nova-core 之外,还添加了与 NVIDIA 固件集成所需的必要链接。
值得一提的是, Nova 最初计划在 Linux 6.14 上发布 其中包含一个由 232 行代码组成的 nova-core 模块,但最终没有被收录,因为 Greg Kroah-Hartman 提到了一些细节 需要完善.
随着新的确认,它将被纳入其中, 现在控制器将进入下一阶段 其中计划添加:
- nova-drm: DRM(直接渲染管理器)驱动程序,用于从用户空间管理与 GPU 的交互。
- 带有 vGPU 管理器的 VFIO: 将允许在虚拟化环境中使用 NVIDIA 虚拟 GPU。
最后需要澄清的是,Nova e在当前状态下,它不是一个功能齐全的控制器 而那个 补丁已发送 它们只是开始控制器开发的基础,也就是为以后的开发奠定基础的代码。