2017-04-05 12 views
1

私はPCIe Linuxドライバを開発中です。私はデバイスのISRを登録したいと思います。 Linuxシステムによってデバイスに割り当てられたIRQ番号は、他の(USBホストコントローラ)デバイスでも共有される16です。 (lspci -vでチェック)。ピンベースの割り込みです。PCIe割り込み処理用Linuxカーネル

オンラインで検索すると、ほとんどのPCIドライバの例では、request_irq()APIのフラグとしてIRQF_SHAREDだけが提供されていますが、高レベル/低レベル割り込みのような動作については言及していません。

私の質問は、Linuxカーネルが(PCIeデバイス用の)共有割り込みの動作を、低レベルまたは高レベルでどのように決定するかです。

答えて

1

PCIeはMSIを使用しているため、関連するハイ/ローレベルはありません。従来のPCIカードでは、レベルでトリガされた割り込みが使用されていましたが、ほとんどのデバイスではアクティブローのシグナリングが使用されています。

+0

私の場合、私はMSIを使用していません。 IRQF_SHAREDフラグにIRQF_TRIGGER_HIGH/LOWフラグを付けてIRQを要求すると、異なるフラグ値を持つ別のデバイスによってすでに共有されているIRQとして、 "genirq:Flags mismatch"というエラーがスローされます。そこで、Linuxシステムがこのタイプの共有割り込みをどのように処理するのかを理解したい。このことを記述する文書はありますか? –

+0

これは、カーネル内のより深い機械固有のコードになります。 BIOSまたは低レベルのファームウェア(またはプラットフォームの初期化コード)によって設定され、カーネルはこれらの値を適切に使用します。 –

関連する問題