開発

NVIDIA Novaドライバ、Linux 7.2で本格始動

NVIDIAの次世代オープンソースGPUドライバ「Nova」がLinux 7.2カーネルに向けて大幅アップデート。Hopper/Blackwell対応、GSP統合、Rust HRT採用など、技術的飛躍を遂げている。

9分で読める SINGULISM 編集チームが確認・編集

NVIDIA Novaドライバ、Linux 7.2で本格始動
Photo by BoliviaInteligente on Unsplash

Phoronixの報道によると、Linux 7.2カーネルをターゲットにしたDRM Rustサブシステムの主要変更が、Danilo Krummrich氏によって5月28日に提出された。このパッチセットで最も注目を集めているのは、NVIDIAの次世代オープンソースGPUドライバ「Nova」の継続的な強化だ。Novaは、従来のNouveauドライバの後継として位置づけられており、今回のアップデートにより、その実用性と技術的基盤が大きく前進した。

新たなステージへ

Novaドライバは、NVIDIAがGSP(GPU System Processor)ファームウェアの機能を活用することで、従来のNouveauドライバでは難しかった高度なGPU機能へのアクセスを可能にする。PhoronixのMichael Larabel氏がNVIDIA本社を訪問した際にも、同ドライバの進捗について関係者に質問を投げかけていたことが報じられており、業界内での関心の高さがうかがえる。

今回のプルリクエストには、Linux 7.2向けのDRM Rust抽象化レイヤーの本流への追加、Rustデバイスドライバ向けのHigher-Ranked Lifetime Types(HRT)のサポート、GPUVM即時モードの抽象化、その他の改善が含まれている。Novaは、これらのDRM Rustカーネルグラフィックスドライバの中でも圧倒的に多くのコード量を占めており、Arm Tyrドライバの小幅な改善がそれに続く形だ。一方で、Apple Silicon向けのカーネルグラフィックスドライバが本流に登場する兆しは依然として見られない。

Hopper/Blackwell本格対応

Novaドライバの今回のアップデートにおける最も重要なマイルストーンのひとつが、Hopper(GH100)およびBlackwell(GB100、GB202)GPUへの対応だ。NVIDIAのデータセンター向け主力GPUアーキテクチャのサポートは、このドライバが単なる実験的なプロジェクトではなく、実運用を見据えた開発であることを示している。

具体的なコード変更には、HopperとBlackwell向けのGPU識別およびアーキテクチャベースのHAL選択ロジックの追加が含まれる。さらに、これらのアーキテクチャで使用されるFSP(Foundation Security Processor)のブートパスを実装。FSPファルコンエンジンのサポート、EMEM操作、MCTP/NVDMメッセージインフラストラクチャ、そしてGSPロックダウン解除を伴うFSPチェーン・オブ・トラストブートまで、ブートプロセス全体をカバーしている。32ビットファームウェアイメージのサポートとファームウェアイメージ形式の自動検出も追加された。

アーキテクチャ固有の機能として、フレームバッファ、システムメモリフラッシュ、PCIコンフィグミラー、DMAマスク、WPR/非WPRヒープサイズ設定などが実装されている。

安定性と保守性

Novaドライバの実用性を高める上で重要なのが、GSPのブートとアンロードプロセスの全面的なリファクタリングだ。従来のNouveauドライバでは、ドライバのアンバインドと再プローブの間に手動でのGPUリセットが必要だったが、Novaではこの問題が解決されている。

具体的には、GSPブートプロセスをチップセット固有のHALに分割し、SEC2とFSPのブートパスを明確に分離。ドライバアンロード時には、UNLOADING_GUEST_DRIVERコマンドの送信、Booter UnloaderとFWSEC-SBの実行、Gsp::boot()失敗時のアンロードバンドルの実行といった一連の処理を実装した。これにより、ドライバのアンバインドと再プローブの間で手動によるGPUリセットが不要になった。

GA100とセキュリティ強化

今回のアップデートでは、GA100(Ampere)GPUのサポートも追加された。IFRヘッダーの検出とスキップ、正しいfwsignatureの選択、条件付きFRTSブート、IFRヘッダーレイアウトのドキュメント化が行われている。

セキュリティ面では、VBIOSパース処理の大幅な強化が図られた。チェック付き算術演算、境界チェック付きアクセス、FWSECおよびFalconデータパス全体でのFromBytesベースの構造体読み取りを導入し、VBIOSモジュール構造全体を簡素化。これにより、潜在的なバッファオーバーフローやフォーマット文字列の脆弱性を防ぐ堅牢な実装となっている。

技術的基盤の刷新

Novaドライバの技術的な特徴として、今回のパッチではHRT(Higher-Ranked Lifetime Types)の採用が挙げられる。具体的には、ライフタイムパラメータ化されたpci::Barを直接使用し、Arcの間接参照を置き換え。SysmemFlushやGSPシーケンサにおいてARefを&‘bound Deviceに置き換えることで、メモリ安全性とパフォーマンスを両立している。

また、モジュール名をkebab-case(nova-drm、nova-core)に変更し、Kconfigでリトルエンディアンを必須とするようにした。これにより、既存の暗黙的な前提が明示化され、クロスプラットフォームでのビルド時の問題を未然に防ぐことができる。

編集部の見解

短期的には、今回のNovaドライバのアップデートは、Linux環境におけるNVIDIA GPUのサポートに重要な進展をもたらす。特にHopper/Blackwell対応が進んだことで、データセンター向けLinuxサーバでのNVIDIA GPUの利用がよりスムーズになる可能性がある。GSPブートの安定化やVBIOSパースの堅牢化は、実運用での信頼性向上に直結すると評価できる。

長期的視点では、NovaドライバのRustベースの実装が、Linuxカーネルドライバ開発のパラダイムシフトを加速させる可能性がある。NVIDIAが公式にRustベースのオープンソースドライバを推進することで、他のハードウェアベンダーにも影響を与えるだろう。特に、メモリ安全性の向上と保守性の高さは、カーネルドライバ全体の品質向上につながると見る。

編集部として注目したいのは、Apple Siliconドライバの動向だ。Novaドライバが順調に進む一方で、Apple Silicon向けのDRM Rustドライバが本流に登場する兆しがないのは、Asahi Linuxプロジェクトの今後を考える上で気がかりな点と言える。また、NVIDIAがNovaドライバの開発を積極的に進める一方で、従来のプロプライエタリドライバとの関係性をどう整理するのかも、今後の注目ポイントだ。

編集部からの問いとして、皆さんはNovaドライバの実用性をどの程度期待しているだろうか。特に、ゲーミングやクリエイティブワークといった一般ユーザーのユースケースにおいて、NVIDIAのプロプライエタリドライバに取って代わる日は来るのか。また、Rust言語のカーネルドライバへの本格導入が、Linuxエコシステム全体に与える影響について、読者の意見を聞いてみたい。

参考

よくある質問

NovaドライバとNouveauドライバの違いは何ですか?
Novaドライバは、NVIDIAが公式に開発する次世代のオープンソースGPUドライバで、Rust言語で記述されている点が最大の特徴です。従来のNouveauドライバはリバースエンジニアリングに依存していましたが、NovaはNVIDIAのGSPファームウェアを活用することで、より高度なGPU機能へのアクセスと安定性を実現します。
NovaドライバはどのNVIDIA GPUをサポートしていますか?
今回のLinux 7.2向けパッチでは、Hopper(GH100)およびBlackwell(GB100、GB202)のサポートが追加されました。また、GA100(Ampere)のサポートも含まれています。今後、より広範なGPUファミリーへの対応が進むと期待されます。
Novaドライバは一般ユーザーがすぐに使えますか?
現時点では、Linux 7.2カーネルリリース後に試験的に利用できる可能性がありますが、本格的な実用化にはまだ時間がかかると見られます。ゲーミングやクリエイティブワークでの使用を考えている場合は、引き続きNVIDIAのプロプライエタリドライバの利用が推奨されます。
出典: Phoronix

コメント

← トップへ戻る