BAKの日記: レガシーデバイス
な問題で悩みまくりである.
IDE コントローラとして PC/AT のサウスブリッヂのっけてるボードなのだが,このサウスブリッヂがイヤーンな味をかもしだしている.
まず,パワーオン状態で PCI バスに IDE コントローラが見えていない. ISA ブリッヂにコマンド送ってやらないと,PCI バス上に IDE コントローラが見えてこないらしい. ま,これは大した問題ではない(というわけでもないのだが.初期化するタイミングにちと悩んだ).
が,こまるのはこの IDE コントローラ. PCI デバイスのくせに I/O アドレスが移動できない. コンフィグレーションいじっても,意地でも 1f0/170 から動こうとしないのである.
そうすると何が困るか,というと,物理アドレスでの配置. まず,MIPS の場合,I/O アドレス空間,という概念がない. メモリマップド I/O である. さらに,アーキテクチャの縛りで,0x00000000 の物理アドレスに RAM がないと困ったことになる. つまり,ISA I/O 空間に対応したアドレスには RAM が詰まっていて,こいつはどうしようもないのである.
もちろん,CPU 側の PCI ブリッヂで,0x00000000 からの PCI 空間をマップすることもできるのだが,これをやると,PCI 空間と 物理アドレス空間がストレートにマップしない.
ストレートにマップしないと,デバイスドライバ側に細工してやる必要があるのだが,これはこれでおおごとである. 自分のところで使うだけならこれでもいいんだけど,パッチの merge なんて考えているので… うーむ. maling list に投げてみるかなぁ.
教訓: PC/AT のサウスブリッヂは,その過去のしがらみを背負っているので,避けるのが吉. 何が悲しゅうて MIPS マシンで PC/AT 互換機のしがらみにつき合わなくてはならんのか…