Intel Skylake/Kaby Lake CPUでシステムが意図しない動作を行う問題
「Skylake」及び「Kaby Lake」CPUで、システムが意図しない動作を行う問題が報告されています。- Please update microcode to version 20170511 on all supported platforms
- [WARNING] Intel Skylake/Kaby Lake processors: broken hyper-threading
ハイパースレッディングが有効な環境で発生しうる
第6世代の「Skylake」及び、第7世代の「Kaby Lake」のコードネームを持つ「Intel Core CPU」を搭載しており、かつ、ハイパースレッディングが有効になっている環境で、CPUがシステムに致命的な影響を与える不正な動作を行うケースがあるとのことです。報告ではこの問題を回避するため、問題が解決されるまでBIOS/UEFIにてハイパースレッディングを即座に無効にするようにとの記述がなされています。
この問題が発生すると、システムが予測不可能な動作を行い、間違ったエラーが発生したり、アプリやシステムが不正な動作をしたり、データの破損や破壊を招きます。
すべてのOSが影響を受ける
この問題は、LinuxだけでなくすべてのOSで発生しうる問題です。CPUのモデルを調べるには
2015年8月より前に販売されたCPUは、「Skylake」及び「Kaby Lake」CPUではないため、この問題は発生しません。現在利用しているCPUのモデルを調べるには、「端末」から以下のコマンドを実行します。
lscpu
「Model Name」にCPUのモデル名が出力されるので、この内容を控えておきます。
出力されたCPUのモデル名と以下のリストを突き合わせ、「Skylake」及び「Kaby Lake」CPUに該当するかどうか調べます。
ただし「Skylake」及び「Kaby Lake」CPUに該当していても、ハイパースレッディングをサポートしていないCPUでは、この問題は起きません。
ハイパースレッディングが無効あるいは非サポートのCPUでは、上記のコマンド実行時に、「コアあたりのスレッド数」に「1」と出力されます。
ユーザーはどうすれば良いのか?
この問題は、CPUのマイクロコードのアップデートで解決できる問題です。つまりIntel側で修正する問題であり、まずIntelの対応が必要となります。
そしてユーザーは、以下のいずれかの方法でこの問題に対処します。
1.BIOS/UEFIのアップデート
Intelからアップデートされたマイクロコードがリリースされた後、ベンダーがそれに対応したBIOS/UEFIのアップデートをユーザーに提供し、ユーザーがBIOS/UEFIのアップデートを実行することでこの問題に対処します。2.intel-microcodeパッケージのインストール
「Ubuntu」側でアップデートされたマイクロコードを含んだパッケージをリリースし、ユーザーが「intel-microcode」パッケージをインストールします。マイクロコードのアップデートは、「システム設定」>「ソフトウェアとアップデート」>「追加のドライバー」タブから行います。
3.ハイパースレッディングの無効化
ベンダーからアップデートされたBIOS/UEFIがリリースされない場合や、アップデートされた「intel-microcode」パッケージの提供がない、もしくは対応自体が行われていない場合、ハイパースレッディングを無効化し、この問題に対処します。マイクロコードとUbuntuの対応状況
マイクロコードとUbuntuの対応状況です。Kaby Lakeの対応状況
現状「Kaby Lake」では、アップデートされたマイクロコードがベンダーにのみリリースされています。そのためマイクロコードのアップデートを行うには、修正されたマイクロコードに対応したBIOS/UEFIのアップデートが必要になります。
Skylakeの対応状況
「モデル」番号が「78」もしくは「94」、かつ「ステッピング」が「3」であれば、「intel-microcode(3.20170511.1)」パッケージをインストールすることで、この問題を修正できます。そうでなければ、「Kaby Lake」同様修正されたマイクロコードに対応したBIOS/UEFIのアップデートが必要になります。
Ubuntuの状況
「Ubuntu 17.10」では、「intel-microcode(3.20170511.1)」パッケージが提供されています。しかしそれ以外のバージョンでは、現在検討及び作業中です。
「Ubuntu」での対応状況は、以下を参照してください。