Linux kernel 驱动程序中的中断范例(MSI/MSI-X和旧版)
假设PCI硬件支持三种可用的中断范例:Linux kernel 驱动程序中的中断范例(MSI/MSI-X和旧版),linux-kernel,linux-device-driver,interrupt,interrupt-handling,Linux Kernel,Linux Device Driver,Interrupt,Interrupt Handling,假设PCI硬件支持三种可用的中断范例: 基于传统pin的INTx 微星 MXI-X 我想在我的驱动程序中支持所有三种模式,并在module\u param()宏中传递intr\u type参数。我想知道一般的经验法则是什么:如果默认情况下命令行参数为空,是否支持MSI或MSI-X? 既然MSI和MSI-X在逻辑上是相近的,那么最好使用哪一个呢 例如:如果驱动程序检测到设备支持MSI-X,这是否足以尝试启用MSI-X并在驱动程序中使用它,并且在出现故障时恢复到旧的INTx 谢谢。INTx中断可
- 基于传统pin的INTx
- 微星
- MXI-X
module\u param()
宏中传递intr\u type
参数。我想知道一般的经验法则是什么:如果默认情况下命令行参数为空,是否支持MSI或MSI-X?
既然MSI和MSI-X在逻辑上是相近的,那么最好使用哪一个呢
例如:如果驱动程序检测到设备支持MSI-X,这是否足以尝试启用MSI-X并在驱动程序中使用它,并且在出现故障时恢复到旧的INTx
谢谢。INTx中断可能是共享的,因此驱动程序必须始终检查自己的设备是否是中断源。通常,您希望避免这种情况
MSI-X旨在克服MSI的一些缺点。如果您不知道这些是什么,那么它们可能对您的驱动程序并不重要,您可以选择其中之一。基本上,您可以查询端点功能以获得MSI/MSIX支持 grep for:
PCI_CAP_ID_MSI
和PCI_CAP_ID_MSIX
如果不支持,您应该从MSIX回退到MSI和INT。谢谢您的评论。我知道MSI-X允许一个设备分配多达2048个中断。除了MSI和MSI-X的行为相似,对吗?还有其他的区别,但它们确实相似。