2005年4月 7日

[linux-users:104776] Shuttle FN95G5 V2.0 の Yukon Gigabit Ethernet のトラブル

川辺と申します。

Shuttle FN95G5 V2.0 に 2.6.11.6 カーネルを入れてちょっとしたサーバ
(Apacheやpostfix/imapとか動かす位)を仕立てて試験していたのですが、

ifconfig eth0

のタイミングでコンソール(と kern.log)に何やらエラーメッセージが表示さ
れており、TCP/IPレベルの通信は特に異常無く行われている様子なのに、
ifconfig eth0 でTX/RX等のカウンタが一切カウントされない(0のまま)と言う

現象に出逢いました。

ここで、表示されていたエラーは、

eth0: -- ERROR --
Class: internal Software error
Nr: 0x19e
Msg: Vpd: Cannot read VPD keys

です。

Shuttle FN95G5 V2.0 は、lspci -v で以下の結果になるように

0000:02:08.0 Ethernet controller: Marvell Technology Group Ltd.
Yukon Gigabit Ethernet 10/100/1000Base-T Adapter (rev 13)
Subsystem: Holco Enterprise Co, Ltd/Shuttle Computer: Unknown device c231
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 15
Memory at ec040000 (32-bit, non-prefetchable) [size=16K]
I/O ports at d200 [size=256]
Capabilities: [48] Power Management version 2
Capabilities: [50] Vital Product Data

Yukon Gigabit Ethernet ですので、sk98lin.ko (driver/net/sk98lin 配下)
が標準で入っています。(www.syskonnect.de にあるドライバよりかなり古い
ですが)

カーネルは、バニラなソースから自前でバイナリを作り(時間が無かったので、
単なるx86、つまり32bit版です)動かしています。そこで、早速上記のエラー
メッセージを元にソースにあたってみると、エラーメッセージを表示している
のが skgepnmi.c の6554行目であることが分かりました。

しかしながら、ここでエラーを検出した原因はと言うとすぐに(15分とか)で探
せるレベルには無さそうだ(何せ、Marvelのチップの仕様を全く知らないもの
で)と言う結論に達し、上記のエラーメッセージでググって見ました。

すると、結構色々なところで話題(RedHatのMLとかSUSEのMLとか、SUSEの日本
語の記事とか)になっており、実際に ASUSの K8V でも類似した問題が出てい
たらしく、そのためのフィックス(2.6.11.6 では未だ printk の書き方にまず
い点が残ってましたが)は入っています。

ですが、今回遭遇した問題はそれでは解決できないもののようです。

この関係で色々見た結果、どうも ASUS とか Shuttle とかこの辺のMBのBIOS
に問題があり、正しい内容が書かれていないことで起きているそうです。
Windowsでは起きない(つまり、チェックサムを真面目に見てないんですね、酷
いドライバです。)ため、メーカは放置しているようです。

とここまで来て、もし BIOS が変わっていればと思い、最新を入手しましたが、
結果は同じでした。 ftp://ftp.shuttle.com/BIOS/sn95g5%20v2/fn95s20a.bin)

仕方が無いので、sk98lin のほとんどのデバッグを有効にし、更にチェックサ
ム処理で内容をダンプさせてみて、試して見たところ最後のチェックサムの値
がおかしい意外は、一見正常に見えます。

--- printk で内容表示したものを beav でバイナリ化してみたファイルです。

0: 82 30 00 59 75 6B 6F 6E 20 47 69 67 61 62 69 74 .0.Yukon Gigabit
10: 20 45 74 68 65 72 6E 65 74 20 31 30 2F 31 30 30 Ethernet 10/100
20: 2F 31 30 30 30 42 61 73 65 2D 54 20 41 64 61 70 /1000Base-T Adap
30: 74 65 72 90 4A 00 50 4E 0D 59 75 6B 6F 6E 20 38 ter.J.PN.Yukon 8
40: 38 45 38 30 30 31 45 43 08 52 65 76 2E 20 31 2E 8E8001EC.Rev. 1.
50: 33 4D 4E 07 4D 61 72 76 65 6C 6C 53 4E 0D 43 41 3MN.MarvellSN.CA
60: 34 64 45 66 47 62 37 33 34 38 34 43 50 04 01 10 4dEfGb73484CP...
70: CC 03 52 56 0B 89 00 ..RV...

これは、skvpd.h の説明を元にイージーに解析してみると

RES_ID(0x82) 0x30(0) 0x0 "Yukon Gigabit Ethernet 10/100/1000Base-T Adapter"
RES_VPD_R(0x90) 0x4A(J) 0x0
"PN" 0x0D "Yukon 88E8001"
"EC" 0x08 "Rev. 1.3"
"MN" 0x07 "Marvell"
"SN" 0x0d "CA4dEfGb73484"
"CP" 0x04 0x01 0x10 0xCC 0x03
"RV" 0x0B 0x89 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

と言う感じのデータになっており、RV (VPD_RV:Checksum and Reserved) 意外
は、問題が無さそうです。RVの後ろも少しダンプさせてみたら、
0x91(RES_VPD_W)がすぐに来ていたので、形式的には正しそうです。

以上のことから、「Checksum の値が悪いだけ」と乱暴に結論付け Checksum
エラーを無視すると言う暴力的な修正を加えて動かして見ました。

結果は、取りあえず問題が無いかの如くに動作しました。

始めに書いたエラーは当然出なくなりましたし、ifconfig で見える各種統計
情報も取得でき、ethtool のほんの一部の操作も受け付けるようになりました。

と言うことで長くなりましたが、もし、Shuttle FN95G5 V2.0 で Linux を動
かそうと思う人がいらっしゃったら、当面は、以下の非常に乱暴なパッチをあ
てて動かすと少しだけ幸せに使えるかも知れません。

-------------------------<ここから>-------------------------
--- skvpd.c.ORIG 2005-03-26 12:28:22.000000000 +0900
+++ skvpd.c 2005-04-07 07:35:53.000000000 +0900
@@ -502,7 +502,7 @@
/* checksum error */
SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
("VPD Checksum Error\n"));
- return(1);
+ printk(KERN_WARNING "VPD Checksum unmatch result(0x%x).\n", x);
}

/* find and check the end tag of the RW area */
-------------------------<ここまで>-------------------------

もちろん、このパッチ無保証です。
チェックサムに引っ掛かる位ですから、本当は問題が隠れただけなのかもしれ
ません。それでも、私の場合は、当初のエラーが解消でき、取りあえずTCP/IP
レベルの通信の障害が出ていないのでこのまま使ってみようと思います。

今回は、時間があまり無かった
(それでも、4時間も費やしてしまった ....orz)
ので、いい加減に済ませましたが、Shuttle のこの場合と言う確実な同定が出
来るのなら、その場合だけチェックサムを見ないと言う回避の方がましだと思
います。

それが出来たら本家にフィードすべきかと思ってますが、時間がとれないかも
しれません。
--
Kawabe,Yoshihiro <ripula@xxxxx>
As the stars blink in the night sky, our married hearts are never splitted.
Even if we will unclasp each other hands, until we retain that. by H.S.


投稿者 xml-rpc : 2005年4月 7日 08:13
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/9986
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。