[Suzaku:00336] Re: io_block_mapping と ioremap について

Ryos Suzuki email@hidden
2005年 6月 24日 (金) 14:10:38 JST


シンビーの鈴木です。

io_block_mapping と ioremap に関連して、Linux デバイスドライバと
いう本の中で、
「同様に、以前のカーネルでは、すべてのポートアクセス関数(inb や
その仲間)がすべてのアーキテクチャでサポートされていたわけではあ
りませんでした。〜中略〜 これらの関数はハードウェア依存なので、
きちんと実行させるのは容易ではなく、努力するほどの価値はありませ
ん。」
とのことです。直接的には書いてませんが、ioremap あるいは ioremap
_nocache を使って(あるいは使わなくても。MIPS 系は使わなくて良い)
マップした後に、readb, writeb などを使うのがセオリーのようです。
どのアーキテクチャでも動作するためには直接のアドレスを使ってはだ
めで、readb, writeb などを使うようです。alpha では ioremap を読
んでも、直接メモリにマップされるわけではないようで、(alpha は触
ったことがありませんので、本の受け売りです)readb などを使わない
とちゃんと動かないそうです。

> 次期バージョンの dist/kernelで _IO_BASEを定義すべきかどうか(結局どこに
> 定義しても問題が起る? 0にする?)は検討の余地があると思っています
> 
> # 意見ボシュー

アドレスや割り込み優先度などの再配置される可能性のあるリソースは、
OS がどこに配置したかをドライバに教えてくれる機構が必要だと思い
ます。
例えば、PCI では誰か(BIOS か OS?)がアドレスを適当な場所に配置
しているはずで、Windows では OS が PnP の機能として、どのに配置
したかを教えてくれます。Linux の PCI はどうなっているのでしょう?
それと似たような機能があればいいと思います。
あと、Linux では複数の同じ PCI ボードがあった場合、どう処理して
いるのでしょう?Solaris(うろおぼえ) や Windows が持つインスタ
ンスとかいう考え方があるんでしょうか?(<=いずれ自分で調べます
が、、、)


------
鈴木量三朗
email@hidden

有限会社 シンビー
千葉市中央区新千葉 3-7-6
TEL/FAX 043-244-9714
http://www.sinby.com




suzaku メーリングリストの案内