假设PCI硬件支持三种可用的中断范例:
我想在我的驱动程序中支持所有三种模式,并在intr_type
宏中传递module_param()
参数。我想知道一般的经验法则是什么:如果默认命令行参数为空,支持MSI还是MSI-X?
由于MSI和MSI-X逻辑上很接近,哪一个应该更适合使用?
例如:如果驱动程序检测到设备支持MSI-X,这是否足以尝试启用MSI-X并在驱动程序中使用它,如果失败则恢复为传统的INTx?
感谢。
答案 0 :(得分:1)
INTx中断可能是共享的,因此驱动程序必须始终检查自己的设备是否为中断源。通常,您希望避免这种情况。
MSI-X旨在克服MSI的一些缺点。如果你不知道那些是什么,那么它们可能与你的司机无关,你可以选择其中一个。
答案 1 :(得分:1)
基本上,您只需查询MSI / MSIX支持的端点功能。
grep for:PCI_CAP_ID_MSI
和PCI_CAP_ID_MSIX
如果它不受支持,你应该从MSIX回退到MSI和INT。