Nova: NVIDIA GPU 用の新しい Rust ドライバーが Linux 6.15 に登場

ノヴァ、ラスト

1年前、レッドハットはLinuxシステム上でNVIDIA GPUを管理するための新しいオープンソースドライバーの開発に新しい"。前身の Nouveau とは異なり、Nova は、グラフィック カード自体に統合された GSP (GPU システム プロセッサ) マイクロコントローラに初期化と制御操作を委任します。

そして今、数か月のうちに (他の新しいプロジェクトとは異なり)、このドライバーは Linux 6.15 カーネルに統合されるパッチ セットとして提案されるほど成熟したようです。これは Linux 上のドライバーの最初のバージョンです。

ノヴァ、それは Linuxカーネルモジュールとして設計され、 DRMサブシステムに依存する ユーザー空間からGPUとのやりとりを管理する。この開発は Nouveau の進化形とみなされていますが、主な違いは、Turing マイクロアーキテクチャに基づく NVIDIA GeForce RTX 2000 シリーズのモデルをカバーする GSP ファームウェアを搭載した GPU のみを対象としていることです。

Nouveauとの違いとNovaの利点

ノヴァ ヌーヴォーの構造的問題を解決しようとしているこれには、メモリ管理 (VMM/MMU) やコード内のロックなどの領域での大幅な見直しが必要になります。 Nouveau とは異なり、Nova は NVIDIA の GSP ファームウェアを活用して GPU の初期化と制御を簡素化し、コードの複雑さを軽減して古いカードを処理する必要性を排除します。

ノヴァコード Rustで書かれていますメモリ管理のエラーを最小限に抑えることでセキュリティを向上させるだけでなく、他のドライバーの開発のために再利用可能なレイヤーと抽象化を作成できる言語です。

プロジェクト これは、rust-deviceなどのさまざまな並行イニシアチブによってサポートされています。 ドライバーを作成するため、 PCI バスおよび rust-drm とのやり取りのための rust-pci DRM および GEM サブシステムとの統合用。これらのツールは、Apple M1 および M2 GPU 用の Rust ドライバーである drm-asahi の開発にも使用されており、Rust で記述されたグラフィックス ドライバーのインフラストラクチャの統合を示唆しています。

言語の使用 この開発における錆は偶然ではないRust はレビューとリファクタリングを容易にするメカニズムを提供するため、プロジェクトの安定性が向上します。 Linux カーネルでのこの言語の採用は、モジュールの記述を近代化し、新しい貢献者が開発にアクセスしやすくすることを目指す、より広範な戦略に対応しています。

これは、Rust をカーネルに統合するための唯一の継続的な取り組みではありません。現在、Apple AGX GPU ドライバー、NVMe ストレージ サポート、PuzzleFS ファイル システム、さまざまなセキュリティおよびデバイス管理の実装など、他のドライバーとシステムもこの言語で開発されています。 Linux エコシステムでは Rust へのトレンドが勢いを増し続けており、オペレーティング システム カーネルの開発におけるセキュリティと安定性への対応方法に大きな変化が起こっています。

実装フェーズ

現在のところ、 Novaは実装の第一段階にあります、GSP ファームウェアとの通信に必要な抽象化を確立する約 400 行のコードを持つモジュールである nova-core を組み込みました。 nova-core に加えて、NVIDIA ファームウェアとの統合に不可欠なリンクも追加されました。

言及する価値があります、 Novaは当初Linux 6.14でリリースされる予定だった 232行のコードからなるnova-coreモジュールが付属していたが、Greg Kroah-Hartmanが詳細について言及したため、最終的には含まれなかった。 磨きが必要な.

新たに確認されたことで、 コントローラーは次の段階に進みます 以下の内容を追加する予定です。

  • ノヴァ-drm: ユーザー空間から GPU とのやり取りを管理するための DRM (Direct Rendering Manager) ドライバー。
  • vGPU マネージャーを備えた VFIO: 仮想化環境で NVIDIA 仮想 GPU を使用できるようになります。

最後に、Nova eが現状では機能的なコントローラーではない そしてそれは パッチを送信しました これらはコントローラーの開発を開始するための基礎に過ぎず、つまり将来の開発の基盤となるコードです。