[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pbsd-mg2] Re: Plaform ID



Platform ID について:

 > まだ、マシン自体の構成がわかってないんであれなんですが...
 > 単一のカーネルイメージで、できるだけ多くのplatformに対応したいためのものでしょうか?
 > platform IDなしで、対応する場合
 >  MCR300
 >  MCR500
 >  のような個別ごとのconfigurationファイルで別々のカーネルを用意すれば解決できる。
 >  これは、あってますか?

どちらも半分 YES です。
最終的(理想的)には、ほとんどの場合はデバイスの有/無、デバイスの
アドレス(location)で切り分けられるので、そういう意味では YES です。
しかし、そういうきっちりいかない部分、ソースファイル内で
#ifdef XXX_MCR510_WORKAROUND ... #endif なんていうものがあって、
configration file にも option XXX_MCR510_WORKAROUND などと書くならば、
結局Platform ID の値を #define のようなもので静的に
カーネルに埋め込むのと同じことになると思います。

 >  と、具体的にprobeが困難な事例を知りたいです。マシンがわかってないので
 > ソース見た想像なんですが、vrip/vrgiuは自分の子デバイスがついているかど
 > うかがわからないバスデバイスなので、config_searchする。でも、全マシン
 > 用のconfigurationファイルのまま、matchを流すと、matchルーチンでの副作
 > 用が問題あるということでしょうか?

さしあたって問題なのは vrgiu の先です。
GIU には 1 bit のデータポートがいくつかあります。
あるビットはある機種では RS232C の PHY の電源の ON/OFF が割り当てられて
います。このビットは違う機種ではブザーや場合によってはシステムリセット
などに割り当てられているかも知れません。
1bit しかないので、直接的な probe ほぼ不可能です。

PC Card や PCI card のように probe できるように設計されたデバイスを
probe するのは賛成ですが、それ以外のほとんどのデバイスを試行錯誤して
probe するよりも platform ID のようなもので統一的に扱えた方が
いいのかも、と思って作ってみました。

 >  と、数字じゃないlocatorを使うにはconfig(8)自体でサポートするのが筋か
 > という気がするんですが...

やっぱり駄目ですか(^^;
結構うまく誤魔化したと思っているんですけど...

真面目な話、platid を locator の一つとしてあつかうなら、いまのままでも
いいような気がします。locator とすること自体に問題があるのなら、
当然 config でサポートしなければなりません。

Takemura