Dev86に入っているbccを使って、DOS(16bit)上でMSRレジスタの読み出しを行うようなツールらしきものを書いてみた。
表示される値がそれなりに確かっぽいことは一応確認していますが…まあ、普通はもっとマトモなツール使うよねということで。
ていうかbccのインラインアセンブラ全然自信無いです。思いっきり嘘八百なコード書いてるかも(うげ。
本当ならインラインアセンブラなんて使わずに、アセンブラはアセンブラ、CはCでコードを分けるつもりだったんですが…ld86の使い方がよー分からんという理由でこんな形になっています。
素直にOpen Watcom使った方がよかったのかなーと、ポーズだけ反省してみよう。
ぃゃなんでこんなことやっているかというと、OpenBSD-4.2/amd64のdmesgで
cpu0: AMD errata 86, 89, 97, 104 present, BIOS upgrade may be required
なんてものが表示されるから。
とりあえず、Errataの番号と名称、およびSuggested Workaroundを引用すると
- 86 DRAM Data Masking Feature Can Cause ECC Failures
- Suggested Workaround: BIOS should disable the data masking feature when ECC DIMMs are used by setting the DisDatMsk bit (Northbridge Configuration Register - MSR C001_001F, bit 36).
- 89 Potential Deadlock With Locked Transactions
- Suggested Workaround: BIOS should set the DisIOReqLock bit (bit 3 in NB_CFG, MSR C001_001F).
- 97 128-Bit Streaming Stores May Cause Coherency Failure
- Suggested Workaround: BIOS should set DC_CFG.DIS_CNV_WC_SSO (bit 3 of MSR 0xC001_1022). The performance effects of setting this bit are limited to streaming stores to the write-combining (WC) memory type, a case expected to rarely occur in actual usage. No loss of performance occurs in the general case (WB memory type).
This workaround must not be applied to processors prior to revision C0.
- 104 DRAM Data Masking Feature Causes ChipKill ECC Failures When Enabled With x8/x16 DRAM Devices
- Suggested Workaround: BIOS should disable the data masking feature when enabling ChipKill ECC with x8, x16 (or greater) ECC DIMMs, by setting DisDatMsk bit (Northbridge Configuration Register - MSR C001_001F, bit 36).
という訳で、OpenBSDはBIOSのMSRの設定値がお気に召さないらしい→どうお気に召さないか調べてやるか、と思った訳で。
でもGA-K8S760Mに入っているBIOSは最新のF9で、これ以上更新されないし。んでもってメモリはECCではないからErrata 86, 104について文句言われても困るし。
設定値を見てもやもやした気分が増幅されるって可能性も、十分にあるんだけどなあ…(18:00)
試してみたものの、
なんかDC_DFG(MSR 0xc0011022)が読めずにハングアップしています。なんでだろう…何か間違ったかな。
21-Mar-2008: 朝昼:いつもの。夕:白飯、スーパーで買った惣菜類、納豆。
22-Mar-2008: 朝:寝てた。昼:白飯、納豆。夕:長浜ラーメンにて。
23-Mar-2008: 朝:トースト。昼:カップ焼きそば。夕:白飯、焼肉、野菜の炒め物。(21:30)