自从 Nvidia 发布其内核模块以来 GPU 作为开源的,看起来 Nvidia 专有驱动程序和 Nouveau 开源驱动程序都会随着社区的贡献而有很大的改进,甚至在某个时候 努沃可以胜任这项任务。
经过几个月和 Nouveau发展将放缓,红帽已就此事采取行动 并且最近宣布了一个消息 正在从事 Nova 项目,它是一个新的 NVIDIA GPU 开放驱动程序,正在 Rust 中开发。
这位司机 包括GPU初始化和控制操作 在固件中,使用独立的 GSP 微控制器。 Nova被设计为Linux内核的一个模块,并使用DRM(直接渲染管理器)子系统。该项目被认为是针对具有 GSP 固件的 GPU 的 Nouveau 驱动程序开发的延续。
Danilo Krummrich(红帽)解释道:
与 Nouveau 相比,Nova 使我们有机会显着降低复杂性,主要有两个原因。首先,历史上的Nouveau架构,尤其是nvif/nvkm周围的架构,相当复杂且不灵活,需要进行大修才能解决一些问题。接下来,我们还想借此机会为 Rust 在内核方面的努力做出贡献,并从 Rust 编程语言提供的增强的内存安全性中受益。
另外,提到随着Nova的发展, 红帽打算借此机会为 Rust 在内核方面的努力做出贡献,因为如上所述,驱动程序代码是用 Rust 编写的,并使用多个层来用这种语言开发视频驱动程序。例如,驱动程序使用 Rust-Device 分支中的抽象来创建驱动程序,使用 Rust-Pci 分支中的组件来与 PCI 总线配合使用,并使用 Rust-DRM 分支中的 DRM 和 GEM 子系统的绑定。
还提到了针对 Apple M1 和 M2 芯片 GPU 的 drm-asahi Rust 驱动程序的开发。 Rust 的使用预计将通过降低使用内存时出错的概率并允许将视频驱动程序的工作与 Rust 中的通用组件的开发相结合来提高驱动程序的安全性和可靠性。
目标 从诺瓦是 最终成为 NVIDIA Linux 的开源驱动程序,针对支持 GSP 的 Turing GPU 和较新型号(尤其是 RTX 2000 系列)。这种新的控制器正在 Rust 中开发,以实现更大的轻便性和灵活性,这被认为是一个有前途的选择。
一 原因 创建一个新的控制器 相比Nouveau就是简化了流程,这要归功于使用 GSP 固件提供的即用型驱动程序。这避免了 Nouveau 驱动程序代码中不必要的复杂性,该代码需要支持较旧的 NVIDIA GPU,并会引入 VMM/MMU 代码崩溃等问题。通过从头开始开发 Nova 并仅专注于基于 GSP 的 GPU,希望能够避免这些问题和并发症。
另一方面,红帽也提到了一些需要解决的问题,表示选择 Rust,首先要解决的问题是缺乏端到端内核基础设施的 C 绑定抽象:
“例如设备/驱动程序抽象......我们需要上游抽象的用户,但我们还需要抽象来创建驱动程序 - 我们希望开发 Nova 上游并从一个仅使用一些抽象 Rust 的存根开始基本。
最后,如果你是 有兴趣了解更多关于它的信息, 您可以查看详细信息 在以下链接中, 以及咨询开发和查阅这个的源代码 在你的存储库中。