驱动程序中的中断范例(MSI / MSI-X和遗留)

时间:2015-10-29 20:30:31

标签: linux-kernel linux-device-driver interrupt interrupt-handling

假设PCI硬件支持三种可用的中断范例:

  • 基于传统引脚的INTx
  • MSI
  • MXI-X

我想在我的驱动程序中支持所有三种模式,并在intr_type宏中传递module_param()参数。我想知道一般的经验法则是什么:如果默认命令行参数为空,支持MSI还是MSI-X? 由于MSI和MSI-X逻辑上很接近,哪一个应该更适合使用?

例如:如果驱动程序检测到设备支持MSI-X,这是否足以尝试启用MSI-X并在驱动程序中使用它,如果失败则恢复为传统的INTx?

感谢。

2 个答案:

答案 0 :(得分:1)

INTx中断可能是共享的,因此驱动程序必须始终检查自己的设备是否为中断源。通常,您希望避免这种情况。

MSI-X旨在克服MSI的一些缺点。如果你不知道那些是什么,那么它们可能与你的司机无关,你可以选择其中一个。

答案 1 :(得分:1)

基本上,您只需查询MSI / MSIX支持的端点功能。

grep for:PCI_CAP_ID_MSIPCI_CAP_ID_MSIX

如果它不受支持,你应该从MSIX回退到MSI和INT。