FreeBSD QandA 1408

FreeBSD QandA

Q. PC Card タイプの Ethernet カードを挿入したとき
       ed0: device timeout
   という表示がでて機能しません。

A. 使用するドライバによってメッセージは多少異なりますが、この原因は多くの
   場合、PC Card に割り当てられた IRQ が、実際には他のデバイスに使われて
   いることにより、正常に割り込み処理が行えないことにあります。

   新たに PC Card がマシンに挿入されると、pccardd(8) が未使用の IRQ を
   その PC Card に割り当てようとしますが、FreeBSD がサポートしていない
   サウンドカードなどは、使うべき IRQ がシステムに登録されていないため、
   結果的に重複して IRQ を割り当ててしまうことになります。

   この状況を確認するには、まず自分のマシンにどんなハードウェアが搭載され
   ていて、そのデバイスがどういう風にリソースを割り当てているのか正確に
   把握する必要があります。 

     a) マニュアル等でマシン仕様を確認します。
     b) Windows などのシステムプロパティで確認します。
     c) PCI デバイスは BIOS の認識メッセージや、
        scanpci か pciconf などのコマンドでも判ります。

   次に対策としては 3つの方法が考えられます。

     1. 認識されていないデバイスをなんとか FreeBSD に認識させる。
     2. マシンの BIOS 設定でそのデバイスを無効にする。
     3. pccardd(8) にその問題の IRQ を使用しないよう指示する。

   具体的には、

   1. 認識されていないデバイスをなんとか FreeBSD に認識させる。

     まず、そのデバイスを FreeBSD がサポートしているのかどうか調べます。
     各種ドキュメントや LINT を参考にして、カーネルを再構築することになる
     でしょう。その結果、サポートされないデバイスであったり、使用予定が
     無いドライバをカーネルから削除した場合、次の対処法に移ります。 

   2. マシンの BIOS 設定でそのデバイスを無効にする。

     全てのマシンで可能なわけでは無いのですが、BIOS 設定において問題の
     デバイスを無効化します。ただ、最近の NOTE-PC 等ではこれらの設定が
     行えないものも多く、運悪くそういうマシンに当ったときは次の手段しか
     残されていません。

   3. pccardd(8) にその問題の IRQ を使用しないよう指示する。

     次の二通りの方法がありますが、両方とも指定されると i) より ii) が
     優先されますので、混乱しないように注意してください。どちらかと言えば 
     i) の方をお勧めします。なお、PAO を使用している場合は事情が異ります。

   i) pccard.conf(5) の irq に指定する方法

     /etc/defaults/pccard.conf でデフォルト値が設定されていますが、こちら
     は変更せず、/etc/pccard.conf に使用可能な IRQ をリストします。次のよ
     うにタイプしてから PC Card を挿し直してください。

       # echo "irq  10 11" > /etc/pccard.conf
       # kill -HUP `cat /var/run/pccardd.pid`

   ii) rc.conf(5) で pccardd_flags に指定する方法

     同様に使用可能な IRQ を pccardd(8) への `-i <irq>' オプションで指定
     します。/etc/rc.conf を変更したら reboot するのが確実です。

       pccardd_flags="-z -i 10 -i 11"

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。