---------------------------------------------
 ASUS Pentium 4 motherboards の問題
---------------------------------------------

 ASUS の Pen4 マザーボードで ICH2(82801BA), ICH4(82801DB) チップセット
を使っているものは SMBus が使えないようになっているものがあります。
この場合、SMBus を有効にしなければハードウエアモニターは動作しません。

 もし、mbmon/xmbmon が SMBus を見つけられなかった場合は、この可能性が
あります。そんなユーザーは次のようにしてください。

(1) チップセットのチェック

 ICH2/ICH4 チップセットは以下のような PCI 情報を持ちます:

    pci-device ID  ---  ICH2:     vendorID = 0x8086, chipID = 0x2440
                        ICH4:     vendorID = 0x8086, chipID = 0x24C0

    pci-device ID  ---  ICH2(PM): vendorID = 0x8086, chipID = 0x2443
                        ICH4(PM): vendorID = 0x8086, chipID = 0x24C3

   (PM というのは Management Controller の意味で、これが SMBus を司るチップ)

 まず、次のコマンドで OS に認識された PCI bus 上のデバイスをリストして
調べます。

  # pciconf -l (FreeBSD)

  # pcitweak -l (Linux)

これにより、ICH2 または ICH4 がリストにあり、かつ、対応する ICH2(PM)
または ICH4(PM) がリストになければ、貴方のマザーボードはこの問題に
当てはまります。もし、そうでなければ、別の問題ですので以下の方法では
どうしようもありません。

(2) SMBus を有効にする

 ICH2(PM)/ICH4(PM) を有効にするためには、ICH2/ICH4 の 0xF2 にある
LPC レジスターの(ゼロから数えて) bit 3 と 8 を落します。このために、
まず、0xF2 のバイトデータを読みとります:

  # pciconf -r -h [selector of ICH2 or ICH4] 0xf2 (FreeBSD)

  # setpci -d 8086:2440/24c0 f2.w (Linux).


                 (bit)  15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
     word data at 0xF2   x  x  x  x  x  x  x  *  x  x  x  x  *  x  x  x

 次に、上のデータで bit 3 と 8 を落す、つまり、上のデータを VAL とすると
VAL & 0xFEF7 を電卓で計算し、それを改めて VAL としてデータを書き込みます:

  # pciconf -w -h [selector of ICH2 or ICH4] 0xf2 VAL (FreeBSD)

  # setpci -d 8086:2440/24c0 f2.w=VAL (Linux).

(3) ICH2(PM)/ICH4(PM) が有効になっているかを調べる

 (1)で用いたのと同じコマンドで、今度はリスト中に ICH2(PM)/ICH4(PM) が
あるかどうかを調べます。もし、それがあれば、mbmon/xmbmon を起動してみて
ください。今度は SMBus のアクセスが可能になっているはずです。


[参考文献]:

      http://www.lm-sensors.nu/

からダウンロード可能な lm_sensors package 中の次のファイル:

      ./prog/hotplug/README.p4b