Nova: NVIDIA GPU 的新 Rust 驅動程式即將登陸 Linux 6.15

新星,鐵鏽

一年前,紅帽宣布他們致力於開發用於在 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寫的,這種語言不僅可以透過最大限度地減少記憶體管理中的錯誤來提高安全性,而且還允許創建可重複使用的層和抽象來開發其他驅動程式。

該項目 它得到了各種並行計劃的支持,例如 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在當前狀態下,它不是一個功能齊全的控制器 而那個 補丁已發送 它們只是開始控制器開發的基礎,也就是為以後的開發奠定基礎的程式碼。