Gentoo Linux: [Firmware Bug]: TSC_DEADLINE disabled due to Errata; を取り除いた

Linux

発生した問題

$ dmesg | grep microcode
[    0.025038] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x20 (or later)
[    0.092753] SRBDS: Vulnerable: No microcode
[    0.092754] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.422608] microcode: sig=0x40651, pf=0x40, revision=0x17
[    0.422657] microcode: Microcode Update Driver: v2.2.

Gentoo Linux をインストール後,カーネルメッセージに [Firmware Bug]: TSC_DEADLINE disabled due to Errata; と出力されていました.これは,CPU のマイクロコードのアップデートを正しく読み込めず,古いもの (今回は 0x17 ) を読んでいることが原因でした.私の環境は次の通りです.

OS : Gentoo Linux
Kernel : 5.4.48-gentoo
CPU : intel Core i5-4210U

intel の資料によれば,この CPU で期待されるリビジョンは 2019/08/31 の時点で 0x25 です.

やったこと

最初に,Gentoo Wiki を参考にカーネルコンフィグを設定し,必要なツール類をインストールしました.

Intel microcode - Gentoo wiki
# emerge sys-kernel/linux-firmware sys-firmware/intel-microcode sys-apps/iucode_tool

次に,fwupd で UEFI のアップデートを確認しました.UEFI が古い場合,マイクロコードのアップデートに対応できないことがあるそうなので念のため行いました.

fwupd - Gentoo wiki

ここでマイクロコードをリロードしてみたところ,新しいマイクロコードが読み込まれ,リビジョンが 0x26 になっていました.

# echo 1 > /sys/devices/system/cpu/microcode/reload
$ dmesg | grep microcode
[    0.025038] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x20 (or later)
[    0.092753] SRBDS: Vulnerable: No microcode
[    0.092754] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.422608] microcode: sig=0x40651, pf=0x40, revision=0x17
[    0.422657] microcode: Microcode Update Driver: v2.2.
[ 9151.754308] microcode: updated to revision 0x26, date = 2019-11-12
[ 9151.755893] x86/CPU: CPU features have changed after loading microcode, but might not take effect.
[ 9151.755901] microcode: Reload completed, microcode revision: 0x26

マイクロコードのアップデートを適用できることがわかったので,ロードされているマイクロコードのファイルを調べ,カーネルに組み込むことにしました.

システムに必要なマイクロコードだけをインストールするように,/etc/portage/make.conf

MICROCODE_SIGNATURES="-S"

を追記し,マイクロコードのパッケージを再構成しました.

# emerge -1 intel-microcode

これでシステムに適したマイクロコードだけがインストールされました.

$ iucode_tool -S -l /lib/firmware/intel-ucode/*
iucode_tool: system has processor(s) with signature 0x00040651
microcode bundle 1: /lib/firmware/intel-ucode/06-45-01
selected microcodes:
  001/001: sig 0x00040651, pf_mask 0x72, 2019-11-12, rev 0x0026, size 22528

iucode_tool コマンドの結果から,/lib/firmware/intel-ucode/06-45-01 がこのマシンで使うマイクロコードのファイルであることがわかりました.

これをカーネルに組み込むために,カーネルコンフィグを変更しました.make menuconfigBuild named firmware blobs into the kernel binary の欄に調べたファイル名を入力し,再ビルド,インストールしました.

Device Drivers  --->
  Generic Driver Options  --->
    Firmware Loader  --->
      -*-   Firmware loading facility 
      (intel-ucode/06-45-01) Build named firmware blobs into the kernel binary 
      (/lib/firmware) Firmware blobs root directory (NEW)

再起動するとマイクロコードのアップデートがちゃんと適用され,[Firmware Bug]: TSC_DEADLINE disabled due to Errata; はなくなりました.

$ dmesg | grep microcode
[    0.000000] microcode: microcode updated early to revision 0x26, date = 2019-11-12
[    0.314334] microcode: sig=0x40651, pf=0x40, revision=0x26
[    0.314375] microcode: Microcode Update Driver: v2.2.

コメント

タイトルとURLをコピーしました