Nova Rust で書かれた新しいダイレクト レンダリング マネージャー (DRM) カーネル ドライバー
Nvidia がカーネル モジュールをリリースして以来 オープン ソースとしての GPU では、Nvidia 独自のドライバーと Nouveau オープン ソース ドライバーの両方がコミュニティの貢献によって大幅に改善され、ある時点でさらに改善されると思われました。 ヌーボーならその任務を遂行できるかもしれない。
数ヶ月経ってから、 Nouveau の開発は減速するだろう、Red Hat はこの問題に対して行動を起こした そして最近発表されたニュースでは、 Novaプロジェクトに取り組んでいますこれは、Rust で開発されている NVIDIA GPU 用の新しいオープン ドライバーとして提供されます。
このドライバー GPUの初期化と制御操作が含まれます ファームウェアでは、スタンドアロン GSP マイクロコントローラーを使用します。 Nova は Linux カーネルのモジュールとして設計されており、DRM (ダイレクト レンダリング マネージャー) サブシステムを使用します。このプロジェクトは、GSP ファームウェアを備えた GPU 用の Nouveau ドライバー開発の継続とみなされます。
Danilo Krummrich (Red Hat) は次のように説明します。
Nova を使用すると、主に 2 つの理由から、Nouveau に比べて複雑さを大幅に軽減できます。まず第一に、歴史的な Nouveau アーキテクチャ、特に nvif/nvkm 周りは非常に複雑で柔軟性に欠けており、いくつかの問題を解決するには大幅な見直しが必要です。次に、この機会を利用してカーネルにおける Rust の取り組みに貢献し、Rust プログラミング言語によって提供されるメモリの安全性の向上から恩恵を受けたいと考えています。
さらに、Nova の開発により、 Red Hat は、この機会を利用してカーネルにおける 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 で開発されており、有望なオプションとして提示されています。
の1つ 理由 新しいコントローラーを作成するには Nouveauと比較してプロセスを簡素化することです、GSP ファームウェアによって提供されるすぐに使用できるドライバーの使用のおかげで。これにより、古い NVIDIA GPU をサポートする必要があり、VMM/MMU コードのクラッシュなどの問題が発生する Nouveau ドライバー コードの不必要な複雑さが回避されます。 Nova をゼロから開発し、GSP ベースの GPU のみに焦点を当てることで、これらの問題や複雑さを回避することが期待されています。
一方、Red Hat は、対処する必要があるいくつかの点にも言及し、Rust を選択した場合に最初に解決すべき問題は、エンドツーエンドのカーネル インフラストラクチャ用の C バインディング抽象化が欠如していることであると述べています。
「例: デバイス/ドライバーの抽象化...上流の抽象化にはユーザーが必要ですが、ドライバーを作成するための抽象化も必要です。Nova を上流で開発し、いくつかの抽象化 Rust のみを使用するスタブから開始したいと考えています基本。
最後にあなたが それについてもっと知りたい、 詳細を確認できます 次のリンクでは、 同様に、開発を参照し、このソースコードを参照してください。 リポジトリ内にあります。