Core2系CPUのerrata (4)

まだ続く。
今回はRHEL3系(linux kernel 2.4.21)カーネル向け。


修正箇所はRHEL4(linux kernel 2.6.9)と同様に以下。

@arch/i386/kernel/microcode.c:find_matching_ucodes
     total_size = get_totalsize(&mc_header);
     if ((cursor + total_size > user_buffer_size) || (total_size < DEFAULT_UCODE_TOTALSIZE)) {
             printk(KERN_ERR "microcode: error! Bad data in microcode data file\n");
+             printk(KERN_ERR "microcode: skip Bad data\n");
+             cursor += total_size;
+             continue;
-             error = -EINVAL;
-             goto out;
     }


モジュールのコンパイル手順が微妙に異なる。

# gcc -Wall -pipe -D__KERNEL__ -DMODULE -I/usr/src/linux-xxxxx/include -O2 -c microcode.c
# rmmod microcode
# insmod microcode.o


適用。

# microcode_ctl -f intel-ia32microcode-23April2007.txt
# dmesg
 microcode: error! Bad data in microcode data file
 microcode: skip Bad data
 microcode: CPU1 updated from revision 0x44 to 0xc6, date = 03072007
 microcode: CPU0 updated from revision 0x44 to 0xc6, date = 03072007

自動適用は前回書いた2.6カーネル用と大体同じなので省略。


HPのページにあるBIOSアップデートの方でも確認したけど、intel-ia32microcode-23April2007.txt
と同じでマイクロコードのリビジョンは共に0xc6だった。(X5140搭載のモデル)
取りあえずは安心かな。
http://h18023.www1.hp.com/support/files/server/jp/romtabl.html