一部のArc BシリーズがLinuxで黒画面になる原因はVRAMの境界計算|Linux 7.3で修正、自分の環境はログで確認できる
本記事にはアフィリエイト広告(Amazon・楽天市場等)のリンクが含まれています。
Linux 7.3で修正、自分の環境はログ1行で確認できる
出典はLinuxカーネルのコミットdrm/xe: Don’t hand out the flat CCS storage as usable VRAMとFLAT_CCSのアライメントをログへ出す変更、Linux 7.4向けのdrm-xe-nextの差分、Phoronixの報道、Intel公式のCrescent Island発表です。内容は2026年9月20日に確認しました。
Intel ArcのBattlemage世代をLinuxで使っていて、電源を入れるたびに黒画面になる、ログイン画面が延々と再起動を繰り返す、という症状に心当たりがあるなら、GPUの故障ではない可能性があります。
Linus Torvaldsが2026年8月20日に投入した修正のコミットメッセージには、その症状が具体的に書かれています。Xeドライバが圧縮用メタデータの領域を「使える空きVRAM」として配ってしまい、そこにMesaのページテーブルが載ると、圧縮ハードウェアに上書きされて画面が出なくなる、という内容です。
修正はLinux 7.3に入りました。自分のカードが該当するかを判別するログ出力も同じ7.3で追加されています。あわせて、Linux 7.4で入る「故障VRAMの隔離」がArcに来る機能なのかも整理します。
目次
症状コールドブートのたびに黒画面、ログイン画面が再起動し続ける
コミットメッセージに記録されている症状は具体的です。Battlemage世代のGPU(BMG-G21・VRAM 16GiB)を積んだ環境で、Mesaが確保する仮想メモリの3段目のページテーブルが、毎回のコールドブートで問題の領域に配置されました。
その結果、コンポジターのバッチバッファを指すエントリが失われ、最初の描画命令を取りに行った時点でフォルトが発生します。ログイン画面を管理するgdmが延々と再起動を繰り返し、ハードウェアとしては何も壊れていないのに黒画面のまま、という状態になっていました。gdmを手動で再起動すると直ったのは、次に確保されたページテーブルが別の場所に載ったからです。
原因圧縮用の予約領域を「空きVRAM」として配っていた
Intel GPUには、メモリ圧縮のためのメタデータを格納するFlat CCS(Compression Control Surface)という領域があります。Xeドライバはこの領域の開始位置をハードウェアから読み取り、有効なL3ノード数で換算し、その位置より下をすべて「アプリケーションに割り当ててよいVRAM」としてアロケーターに渡していました。
問題は、この境界を128KB単位で切り上げていたことです。「ここから先は圧縮ハードウェアのもの」という境界を上にずらせば、本当の開始位置と切り上げた位置の間が空きメモリとして公開されます。実機の値では、換算後の開始位置が0x3fafff800で、切り上げると0x3fb000000でした。その差にあたる2KBは圧縮ハードウェアの領域なのに、アロケーターの管理下に入っていたことになります。
厄介なのは、この領域を上書きするのにページテーブルもバッファオブジェクトもGPUへの命令投入も要らないことです。圧縮ハードウェアが勝手に書き込むため、ユーザー空間が立ち上がる前に壊れます。修正後に該当ページを読み出すと、2バイトおきに圧縮メタデータが並んでいたことも確認されています。
修正は、切り上げをやめてページサイズ単位で切り下げるというものです。この環境では、除外されるのはちょうど1ページだけでした。あわせて、本来この状況を検出するはずだったアサーションが、条件の作り方の問題で絶対に失敗しない仕様になっていたことも判明し、CCS領域がGSMへ重ならないかを見る形へ置き換えられています。
影響範囲Battlemageすべてではなく、基点がずれるカードで起きる
ここは誤解しやすいところです。Battlemage世代のArcが一律にこの問題を抱えていたわけではありません。換算後のCCS開始位置が128KBの境界にきれいに揃っていれば、切り上げても位置は変わらず、余計な領域は公開されません。問題が出るのは、揃っていないカードだけです。
コミットメッセージに登場するのはBMG-G21でVRAM 16GiBという構成です。Battlemage世代のArcは搭載メモリ量が製品ごとに異なるため、自分のカードが該当するかどうかは型番で決め打ちせず、次に説明するログで確認するのが確実です。
確認カーネルログの1行で判別する
Linux 7.3では、Xeドライバが起動時にCCSの開始位置とアライメント状態をログへ出すようになりました。次のような1行が出ます。
FLAT_CCS base:3fafff800, aligned:no
aligned:noであれば、そのカードは128KBの境界に揃っていない側です。修正前のカーネルであれば、予約領域の一部が通常VRAMとして配られていた可能性があります。aligned:yesなら、切り上げによる食い込みは発生していません。
確認はdmesg | grep FLAT_CCSのように絞り込むのが早道です。このログ自体が7.3で追加されたものなので、7.2以前のカーネルでは出力されません。過去に黒画面で悩んだ環境が該当していたのかを、後から突き合わせる用途にも使えます。
修正入ったのはLinux 7.3、7.2には含まれない
修正がどのバージョンに入っているかが実務では重要です。Linux 7.2がリリースされたのは2026年8月16日で、今回の修正が投入されたのはその4日後の8月20日、つまり次の開発サイクルの開始直後でした。
- Linux 7.2以前 — 修正は含まれていません。FLAT_CCSのログも出ません。
- Linux 7.3 — 境界計算の修正とアライメントのログ出力が、いずれもこのバージョンに入っています。
- ディストリビューションのカーネル — 独自にバックポートしている場合があります。7.2系のままでも修正が取り込まれていることがあるため、配布元の変更履歴を確認してください。
Arcをディスクリートで使うLinux環境全般に言えることですが、GPU側の不具合は「GPUドライバーの更新」ではなくカーネル側の更新で直る場合があります。似た例として、Panther Lake搭載機でゲームがフリーズする問題がCPUの新機能のバグだった件を別記事で扱っています。
続きLinux 7.4にはVRAMの健全性チェックが入る
この一件を受けて、同じ種類の計算ミスを早く見つけるための仕組みがLinux 7.4向けに用意されています。VRAMの最後のページを「カナリア」として使い、BARのサイズ、CCSのサイズ、identity mapの設定が正しいかをドライバの初期化時に確認するというものです。境界の計算を間違えていれば、VRAMの末尾付近で問題が表面化しやすいという考え方にもとづいています。
ただしこれは一般ユーザー向けのVRAM診断ツールではありません。デバッグ用のカーネル設定を有効にしてビルドした場合にだけ動く仕組みで、配布されている通常のカーネルで毎回VRAMが健康診断されるわけではありません。
誤解故障VRAMの隔離はArcに来る機能ではない
Linux 7.4向けの変更にはもう1つ、問題のあるVRAMページを以後の割り当てから外すmemory page offliningが含まれます。海外の報道ではこの2つがまとめて紹介されるため、Arcの壊れたVRAMをLinuxが自動で隔離してくれる機能が来る、と読めてしまいます。
実際のコードを見ると、この機能を無効化する設定項目は、ディスクリートGPUかつプラットフォームがCrescent Islandのときだけ表示されるよう制限されています。ドキュメントにも、この属性はCRI(Crescent Island)でのみ設定できると明記されています。動作テスト用のフォールト注入も同じ判定でCrescent Island向けに絞られています。
Crescent IslandはIntelがAI推論向けに開発しているデータセンターGPUで、Xe3Pアーキテクチャと160GBのLPDDR5Xを搭載します。空冷のエンタープライズサーバー向けで、ゲーミング用のArcとは製品カテゴリーが異なります。160GBのうちごく一部に障害が出ただけでGPUごと停止するより、そのページを切り離して運用を続けられるほうが価値がある、という用途です。Arcのゲーミング向けロードマップがどうなっているかは別記事で整理しています。
page offliningは壊れたメモリセルを直す機能ではありません。問題が判明した領域を以後使わないようにして、残りの正常な領域で動かし続けるための仕組みです。切り離されるページが増え続けるなら、ハードウェアが劣化していること自体は変わりません。
FAQよくある質問
まとめまとめ|黒画面の原因は故障ではなく境界計算
Battlemage世代のArcをLinuxで使ったときに起きていたコールドブート時の黒画面は、VRAMの故障ではなく、Xeドライバが圧縮用の予約領域を空きVRAMとして配っていたことが原因でした。換算後のCCS開始位置を128KB単位で切り上げていたため、実際の開始位置との差にあたる領域がアロケーターの管理下に入り、そこにMesaのページテーブルが載ると圧縮ハードウェアに上書きされていました。修正では切り上げをやめて切り下げるよう変更され、この環境では除外されるのは1ページだけです。
実務上のポイントは3つです。修正はLinux 7.3に入っており、8月16日リリースの7.2には含まれません。自分のカードが該当するかは7.3から出るようになったFLAT_CCS base … aligned:noの行で判別できます。そしてLinux 7.4で話題になっているVRAMの健全性チェックはデバッグビルド限定、故障VRAMの隔離はCrescent Island向けの機能で、どちらも一般のArc環境に降りてくる話ではありません。海外報道をまとめて読むと混ざりやすい3点ですが、性質はそれぞれ別です。



