Radeon HD 7870 XT、14年目のLinux対応
2012年発売のRadeon HD 7870 XTが、14年近く経ったいま、ようやくLinuxのオープンソースドライバで正しく動くようになる。Valveのグラフィックスエンジニア、ティムール・クリストフ(Timur Kristóf)がパッチシリーズを投下した。
2012年発売のRadeon HD 7870 XTが、14年近く経ったいま、ようやくLinuxのオープンソースドライバで正しく動くようになる。Valveのグラフィックスエンジニア、ティムール・クリストフ(Timur Kristóf)がパッチシリーズを投下した。
14年間、誰も相手にしなかったGPU
HD 7870 XTは奇妙なカードだ。型番は7870でも、中身はハイエンドのTahitiダイから切り出された「Tahiti LE」。上位モデルの製造過程で不良ブロックが出たチップを、演算ユニットとL2キャッシュの一部を無効化したうえで下位製品として売る、いわゆるハーベスト品だ。半導体業界では珍しくない歩留まり救済の手法だが、Linuxのグラフィックスドライバはこの「切り刻まれた」構成を想定していなかった。
結果として何が起きたか。HD 7870 XTをPCIeに挿したLinuxマシンは、起動時に真っ黒な画面を返すか、白ノイズだらけのスクリーンを返すか、そもそもブートしないかのいずれかだった。2013年にはSapphire版のTahiti LEが動かないというバグレポートがfreedesktop.orgに立ち、2023年にも別のユーザーが同じ症状で報告している。どちらも放置された。
AMD公式のサポートページには「Linuxドライバあり」と書かれてはいる。ただし中身は5年以上前のバージョンで、実質的に見捨てられていた。
Tahiti LEという「切れ端」
HD 7870 XTの中身を少し具体的に見ておく。Tahitiダイ本体は最上位のHD 7970/7950に使われる大型GPUで、フル構成ではCU(Compute Unit、演算ユニット)32個と768KBのL2キャッシュを持つ。HD 7870 XTはそこからCUが1/4無効化され、実効シェーダ数は1536。メモリバスも384ビットから256ビットに削られ、別SKUとして出荷された。CUの無効化に伴って、L2キャッシュを構成するスライスの一部も連動してヒューズオフされている。
問題の核心はこのTCC(Texture Channel Cache)、つまりL2キャッシュのヒューズオフ構成にあった。AMDGPUカーネルドライバは、TCCの一部が物理的に無効化された状態を「想定された構成」として扱えていなかった。有効なTCCだけを使って動作する、という当たり前の制御が入っていなかったわけではなく、そもそも「部分的に無効化された状態」を認識する経路が欠けていた。
TCCはGCNアーキテクチャにおいてCU群で共有されるL2キャッシュで、メモリコントローラチャネルごとに独立したスライスに分割されている。このスライスが歯抜けになっている状態で、ドライバがフル構成前提のアドレッシングを投げると、当然ながら初期化に失敗する。
こういうエッジケースは、メーカーがサンプルを送って動作確認できる現役世代なら即座に潰される。だが2012年の中位カード、しかも派生SKUにそこまでの検証リソースは割かれない。14年間、ハードウェアは残ったがソフトウェアが追いつかなかった。
Valveの一人の執念
流れを変えたのはValveのLinux Open Source Graphics Driver Groupだ。正確には、そこに所属するティムール・クリストフ一人の粘りだ。彼は2025年秋のXDC 2025(Vienna)でGCN 1.0/1.1の延命プロジェクトを発表して以来、ほぼ単独でカーネルとMesa両方に手を入れ続けている。
直近の成果は大きい。Linux 6.19で、GCN 1.0(Southern Islands)とGCN 1.1(Sea Islands)のGPUは、レガシーのradeonカーネルドライバから新しいAMDGPUドライバへとデフォルトが切り替わった。Phoronixのベンチマークでは、Radeon HD 7950で平均30%前後の性能向上が観測されている。AMDGPUへ移ればRADV(MesaのVulkanドライバ)が手動フラグなしで使える、という副産物も大きい。
その直後、クリストフはKaveriなどGCN 1.1世代のAPUに向けたAMDGPU改善を完了させた。そしていま、最後の残り物であるSouthern Islandsの「ハーベストGPU」に取りかかった、というのが今回の位置づけだ。
パッチシリーズ「Various SI fixes, fix Radeon HD 7870 XT (v2)」
2026年4月18日、クリストフはamd-gfxメーリングリストに4本のパッチをまとめたv2シリーズを投げた。変更ファイルは以下の通り。
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c— 66行追加。無効化されたTCCを持つハーベストSIチップのサポートdrivers/gpu/drm/amd/amdgpu/uvd_v3_1.c— 10行追加。検証済みファームウェアの再検証を避ける修正drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c— 5行変更。AMDGPU_GART_PLACEMENT_LOWがVRAMと重ならないよう修正Documentation/gpu/amdgpu-glossary.rst— 9行。TCCの追加とTCPの更新
合計4ファイル、88行の追加と2行の削除。コードの物量としてはささやかだが、14年動かなかったGPUを動かす88行だ。
v2での変更点として、無効化されたTCCを読み出す際にCGTS_USER_TCC_DISABLEを参照するよう改めたこと、そしてVCE関連のパッチは別シリーズに切り出したことが明記されている。コミットメッセージの律儀さが、14年放置された理由の一端を物語る。誰もやらなかっただけだ。
CGTS_USER_TCC_DISABLEは、TCCのクロックゲーティングとユーザー側での無効化状態を記録するGCNのレジスタ。ここを読めば、どのL2スライスが生きていてどれが死んでいるかが分かる。ハードウェアはとっくに答えを持っていた。ドライバが尋ねる経路を持っていなかった、それだけの話だ。誰が得をするのか
正直なところ、2026年時点でHD 7870 XTを主力として使う人はほとんどいない。新品のGPUを買う層には無縁の話だし、中古市場でも積極的に選ぶ理由は薄い。ではこの88行に意味はないのか、というとそうでもない。
第一に、捨てずに使い続けたい層がいる。予算の制約、地域的な入手難、あるいは単純に「動くものは動く限り使う」哲学。サブPC、ホームサーバーに繋ぐ簡易表示用、ジャンクPCを再生して子どもに渡す用途。そうした現場で、カーネルフラグなしに素のまま起動するという一点は地味にありがたい。
第二に、開発の副産物として他のハーベスト品に知見が波及する。TCCの部分無効化を扱うコードパスは、今後AMDが同じ手法で救済するチップ(歩留まりが厳しくなる先端プロセスでは増える一方だ)の下地になる可能性がある。
第三に、オープンソース開発の面白さそのものだ。誰にも頼まれていない14年前のカードのために、Valveのエンジニアが休日のメーリングリストに88行を投げる。商業的な合理性で説明のつかないこの種の仕事が、Linuxグラフィックススタック全体の厚みを作ってきた。
一人称の貢献が、スタック全体を底上げする
AMDがWindows向けでRDNA1/RDNA2を「メンテナンスブランチ」に回し、新機能のサポート対象から外しはじめているのとほぼ同時期に、Linuxでは10年以上前のアーキテクチャが現役に戻りつつある。メーカーのロードマップの重力に抗って、一人のエンジニアの執念がハードウェアの寿命を延ばしている。
・ ・ ・
HD 7870 XTが真っ黒画面から動くGPUに昇格するまでに、14年かかった。クリストフのパッチが次のマージウィンドウで取り込まれれば、このカードは本来あるべき姿で動き出す。遅すぎるのか、間に合ったのか。判断は、そのカードをいまも挿している人のものだ。
参照元
他参照
関連記事
- Valve開発者、LinuxのVRAM管理を根本から修正
- Valve製VRAMパッチ、4GB GPUで3倍弱の蘇生劇
- Mesa 26.1 RADV、VK_EXT_descriptor_heapでSteam Play加速
- AI駆動の検査がLinuxから27,646行を削り始めた
- Linux 7.1、i486削除コードが正式マージ──反対ゼロ
- MesaがLinuxカーネルと同格に――Fedoraで永続的アップデート例外を獲得
- 悪意あるUSBを検出するLinuxカーネルドライバが登場
- SteamのLinuxシェアが史上初の5%超え──数字の裏側にある真実
- Windows 95で動くWSL、独立開発者が公開
- CachyOS、Linux 7.0に7.1の新機能を先取り搭載