Linux 7.0、Zen 3の誤検知エラーを土壇場で抑制
Linux 7.0安定版のリリースが予定される当日、AMD Zen 3のユーザーを長らく悩ませてきた誤検知のハードウェアエラーを黙らせるパッチが、土壇場で送り込まれた。原因はハードウェアではなかった。
リリース当日の駆け込みパッチ
Linux 7.0安定版のリリース当日、AMDのマシンチェック例外(MCE)ドライバに対する修正パッチが、ギリギリのタイミングでLinus Torvaldsへ送られた。送り主はx86メンテナのIngo Molnar。件名は素っ気なく、「Zen3クライアントで発生する誤ったハードウェアエラーをフィルタする」とだけ書かれていた。
変更行数はたった8行、対象ファイルは arch/x86/kernel/cpu/mce/amd.c の一か所のみ。リリース直前にカーネルへ入れるにしては、あまりに慎ましい修正だ。だが、この8行の裏には、Ryzen 5000シリーズのユーザーが抱え続けてきた不安があった。
| 送信者 | Ingo Molnar(x86メンテナ) |
| 宛先 | Linus Torvalds |
| 件名 | x86/mce fix |
| 対象ファイル | arch/x86/kernel/cpu/mce/amd.c |
| 変更行数 | 8行(挿入のみ) |
| 対象CPU | AMD Zen 3 / Ryzen 5000シリーズ |
| 症状 | L3キャッシュのdeferred errorが誤検知として出力 |
| 判定方法 | CPU ID・モデル・ステッピングで対象を絞る |
| 投入先 | Linux 7.0(リリース直前に追加) |
| 波及先 | stable系列にもバックポート予定 |
ユーザーを混乱させた「L3キャッシュのゴミ値」
問題が顕在化したのは、最近のLinuxカーネルでエラー処理コードが書き換えられた後のことだ。Zen 3、つまりRyzen 5000シリーズを使う一部のユーザーのdmesgに、L3キャッシュのdeferred errorという見慣れない警告が流れ始めた。
mce: [Hardware Error] という文字列は、普通のユーザーにとって「CPUが不調に陥っている」と読める。しかし今回のケースでは、その警告の中身は実体のない数値、つまり「ゴミ値」だった。ハードウェア自体はまったく正常。にもかかわらず、カーネルが丁寧にそれを拾い上げ、ログへ叩きつけていた。結果としてバグレポートがLinuxコミュニティに流れ込むことになる。「自分のCPUはもう寿命なのか」と疑ったユーザーは、決して少なくなかったはずだ。
悪いのはCPUではなく、書き換えたばかりのコード
原因を追っていくと、犯人は直近のエラーハンドリングのリワークそのものだった。改善のために入れたコードが、本来は黙って捨てるべきイベントまで律儀に報告していた。
直すつもりが、壊した。オープンソースの開発ではときどき起きることだが、影響範囲がRyzen 5000という広いユーザー層に及んだのが今回の厄介なところだ。
そもそも「ハードウェアのエラー報告」は、誰のための仕組みなのか。異常を早く検知するための仕掛けが、正常なチップに不吉な診断書を発行し続けるなら、その仕掛けは逆に信頼を損ねる。狼少年の話と構造は同じだ。
応急処置であって、根本治療ではない
では今回のパッチは、エラー処理のリワークそのものを見直したのか。答えはノーだ。入ったのは、CPUのID・モデル・ステッピングを見て、該当するZen 3チップではMCEメッセージを黙らせるだけ。要するに応急処置だ。
対象のCPUだったらログに出さない。それだけの話である。潔いといえば潔いが、根本原因の掘り下げは宿題として別に残されている。
Phoronixも指摘しているように、リリース直前のこの段階で安全に入れられるのは、こうした限定的なフィルタまでだ。カーネルのリリースサイクルは信頼の上に成り立っている。土壇場でエラー処理ロジックそのものに手を入れる方が、よほどリスクが高い。
既存の安定版にもバックポートへ
このフィックスはLinux 7.0だけで終わる話ではない。stable kernelチームに向けたバックポート対象としてマークされており、現行の安定版シリーズにも順次取り込まれていく見込みだ。
つまり、UbuntuやFedoraのように、stableカーネルを定期的に取り込むディストリビューションを使っていれば、特別なことをしなくてもいずれ直る。不気味なログは、自分のマシンから黙って姿を消すはずだ。
ハードウェアの誤検知は、オープンソースのカーネル開発では珍しい話ではない。今回の一件で救いなのは、誰かが気づいて、8行で黙らせたことだ。
美しい解決ではない。だが、偽の警告がユーザーの画面から消えるなら、いまはそれで十分だ。
参照元
他参照
関連記事
- Linux 7.1、37年間続いたi486サポートに幕を下ろす
- Linuxカーネル、AI生成コードを条件付きで容認へ
- Linuxに「ドリキャスのメモカ」用ファイルシステムが提案
- Linux v0.1の残骸を一掃:35年越しの「春の大掃除」
- Valve開発者、LinuxのVRAM管理を根本から修正
- Redox OSがLLM生成コードを全面拒否、議論の余地なし
- トーバルズ、Linux 7.0来週リリースへ rc7で最終確認
- Zen 6 PQOS拡張:AMDが帯域幅制御と特権分離を進化させた
- SteamのLinuxシェアが史上初の5%超え──数字の裏側にある真実
- Ryzen X3D全9機種比較、主役は今も7800X3Dだ