[SCore-users-jp] PMX-EtherHXB-Driverの追加について

Kameyama Toyohisa kameyama @ pccluster.org
2009年 3月 11日 (水) 14:16:44 JST


亀山です.

Kohei HONDA Wrote:
>> Kohei HONDA Wrote:
>>> SCore7.0.0を使用しPCクラスタを構築しています。
>>> ノードのNICに Realtek社のRTL-8169 Gigabit Ethernetカードを使用しているので、
>>> PMXに対応させるためHowToAdd-PMX-EtherHXB-Driver.txtを
>>> 参考にしてr8169のためのドライバ作成を行っております。
>> ちなみに, PMX/Ethernet は NIC driver の改造無しに動きます.
>> (pmx_ethernet_loader と pmx_ethernet が load されていれば良いです.)
>> PMX/Etherhxb を使用するときのみ NIC driver をいじる必要があります.
> 
> r8169 NIC driverを改造せずにPMX/Ethernetで
> 動作させるにはどのようにすればよいのでしょうか?
> 
> 現在はMPIプログラムを1ノードでは実行できますが、
> 複数ノード実行するとプログラムがなんのメッセージも出力せず応答しなくなってしまいます。
> /var/log/messages を見ると、
> 
> Mar 11 12:16:37 scoreheadnode last message repeated 2 times
> Mar 11 12:16:37 scoreheadnode kernel: pmel_netif_rx alignment error skb->data in

どうも r8169 の driver は Ethernet packet が PMX/Ethernet が意図する
alignment にあっていないようです.
    score7-src/SCore/pmx/arch/etherhxb/driver/loader/linux2_6/pmx_ethernet_loader.c
の
    pmx_ethernet_loader_rxfunc()
でそのチェックを行っているのですが, その部分
   if(((unsigned long)skb->data)&0x3) {
        printk("pmel_netif_rx alignment error skb->data in skb %p proto=%x head=
%p\n", skb, htons(pt->type), skb->head);
        kfree_skb(skb);
        local_irq_restore(flags);
        return NET_RX_SUCCESS;
   }
を comment out してみてください.

>> pmx_etherhxb_alloc_skb. pmel_netif_receive_skb,
>> pmx_etherhxb_dev_kfree_skb を使用するはずです.
>> r8169 の driver が compile できているか, install できているか
>> 確認してください.
>> module は
>>     /opt/score/modules/obj.x86_64-rhel5-linux2_6\@kernel_version
>> の下にできます.
> 
> 指定されたディレクトリ内に作成したr8169_scorepm.koがありました。
> moduleはHowToAdd-PMX-EtherHXB-Driver.txtに沿って作成したものです。
> このmoduleは
> /lib/modules/2.6.18-92.1.22.el5/extra/score+pm/
> にも配置されていました。
> 
> modprobeでmoduleを追加しようとした場合の結果は
> 以前のメールの時と同様でした。

symbol name が SCore6 のものに一致するのですが...
すみません.
include file の名前が違うようです.
    #include "pmx_etherhxb_client.h"
にしてください.

> また、作成したmoduleの依存関係を見ると以下のようになっていました。
> [root @ scoreheadnode linux2_6]# modinfo r8169_scorepm | grep depend
> depends:
> 
> 対してe1000_pmxの場合は以下のようになっていました。
> [root @ scoreheadnode linux2_6]# modinfo e1000_pmx | grep depend
> depends:        pmx_ethernet_loader,pmx_etherhxb_mem
> 
> この依存関係が設定できていないことが原因ではないかと考えています。

これも問題かも...
(symbol が違うだけだと良いのですが...)
    4. で score7-src/SCore/pmx/arch/etherhxb/driver/Makefileいじっていますが,
    ここで r8169 は 最後に追加してください.
    (少なくても etherhxb_mem の後ろに...)
    NIC driver の Makefile に
        MODULE_DEPEND = pmx_etherhxb_mem
    があることを確認してください.
依存関係の検出はその driver を compile するとき
    ~/sc7/score7-src/modules/obj.x86_64-rhel5-linux2_6 @ kernel_version/Module.symvers
を見て決定します.
依存関係が検出できたら nic driver directory の
     obj.x86_64-rhel5-linux2_6 @ kernel_version/*_mod.c
に書き込まれます.

Kameyama Toyohisa



SCore-users-jp メーリングリストの案内