Linuxはどのirq番号を使うべきかをどうやって知ることができますか?

Linuxはどのirq番号を使うべきかをどうやって知ることができますか?

私はドライバプログラマではなく、Linuxがpcieデバイスにirq番号を割り当てる方法を知りません。

NICドライバの例では、Linuxは「プローブ」または「開く」機能を実行する前にどのirq番号を使用する必要があるかを既に知っているようです。

前任者:https://github.com/torvalds/linux/blob/4608f064532c28c0ea3c03fe26a3a5909852811a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c#L6608

エラー= ixgbe_request_irq(アダプタ);

ixgbeは 'adapter'変数のデータを使用してirq番号を取得できます。これは、irq値がすでにアダプター構造にあり、生成された番号ではなく既に存在する値であることを意味します。

pci/pcie 設定空間から読み込んだ場合、他のデバイスと簡単に衝突しないでしょうか。

カーネルによって生成/予約されている場合、irq番号がすでに「アダプタ」変数にあるのはなぜですか? (またはBIOSで指定しますか?)

MSI割り込みはカーネルによって生成されるようです。

-

私が理解しているように、irq番号はPCIe構成スペースの割り込みラインレジスタ(オフセット3Ch)から読み取る必要があります。これは、kerenlがすでにどのirq番号を使用する必要があるのか​​を知っていて、BIOSで割り込みラインレジスタを更新する必要がある理由のようです。 (私の推測では)起動中にまだ仮想IRQがあり(lspciに-bがない場合)、MSIに別のIRQ(?)があるようです。メモリなどの共通リソースを予約する必要がありますか?

ベストアンサー1

レガシー割り込みの場合、irq 値は構成スペースから読み取られますが、irq 値はほとんど BIOS によって割り当てられます。

このセクションの追加情報: http://tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html

MSI / MSI-X割り込みの場合、これは割り当てによって行われます。

例: pci_alloc_irq_Vectors() https://www.kernel.org/doc/Documentation/PCI/MSI-HOWTO.txt

おすすめ記事