At Fri, 12 May 2006 22:04:29 +0900, Masaru Imai wrote:
今井です。
Friday 12 May 2006 13:38、Hiroki Yoshioka さんは書きました:
もろぶつかってますね。
PCIバスは割り込みを共有するように設計されていますが、 「ぶつかる」ことがあるのですか?
PCIバスの設計はそうかもしれませんが、割り込み共有を考えてないデバイス、ドライバ が存在します。
まあ、でも実際そういうデバイスは割と少ないですね。
私の知識では、PCIデバイスは複数のデバイスが同一の割り込みラインを使用でき、 カーネルはそのラインを使用しているデバイスドライバに順に割り込みを通知します。 デバイスドライバは自分のデバイスを参照し、本当に自分のデバイスが 割り込みを発生したかどうかを確認します。 自分のデバイスが割り込みを発生していた場合、相応の処理をした後、 「処理をした」という返事をします。
教科書通りの話をしても.....。 知識は知識であって仮想的なものです。現実に即してない場合があります。 現実は前述の通り違います。 その辺り深く調べた訳ではないですが、割り込みのタイプとしてエッジとレベルと2種類 あったと思います。 Linuxやる前に某OSで割り込み共有できないがためにPCIスロットへ挿す順番等で 悩んだ経験があります。
Linux の場合は、割り込み番号の設定の仕方で色々問題が出てきます。
割り込み番号の設定は、ACPI から情報を得たり、BIOS の設定を当てにしたり、
と様々な方法があるのですが、それが実際にデバイスが期待する値と異なる事
がよくあるのです。
最近は ACPI サポートも大分改善されましたが、以前は DSDT を自分で直した
り、と色々面倒なものでした。Linux 以外の「まともに動く OS」では、ほぼ
全てのデバイスをカバーした巨大な ACPI blacklist を持っている、という噂
があるくらいですから。
といっても、割り込み番号の問題は特に古い話ではなくて、最新のマシンでも
BIOS が buggy だと、ほとんど全てのデバイスが一つの IRQ ラインに載って
しまったり、といった悲惨な状況になります。SUSE のブートメニューの
"Failsafe" で ACPI をオフにしているのは、こういった話が背景にあるので
すね。
BIOS の "PNP OS" という項目は、ACPI が主流になる以前のマシン、主にノー
トでよく見られた問題です。おそらく、件のマシンも当てはまると思います。
もしかしたら、割り込み以外の問題かもしれませんが、いずれにせよカーネル
のメッセージを良く見た方が良いでしょう。
--
Takashi Iwai