iMX6:MSI-X无法在Linux PCIe设备驱动程序中运行

时间:2017-09-29 07:23:14

标签: linux-device-driver pci-e imx6

我正在尝试让MSI-X在Linux v4.1中的iMX6(Freescale / NXP / Qualcomm)CPU上运行PCIe字符设备驱动程序。每当我拨打pci_enable_msix()pci_enable_msix_range()pci_enable_msix_exact()时,我都会收到EINVAL值。我确实在内核配置中选择了CONFIG_PCI_MSI选项,我也可以让单个MSI与pci_enable_msi()一起工作,但我也无法让多个MSI工作。

我已经在运行内核v3的Intel i7上测试了我的驱动程序代码,并且连接了相同的PCIe硬件,我能够毫无问题地使MSI-X工作,所以我知道我的代码写得正确并且硬件运行正常。

在iMX6上运行时,我可以使用lspci -v来查看硬件具有MSI-X功能并查看它允许的IRQ数量。调用pci_msix_vec_count()时,我甚至可以在驱动程序中获得相同的正确数字。

问题

  1. 我需要设置其他内核配置标志吗?
  2. 我需要考虑iMX6 CPU的具体内容吗?
  3. 有没有人对iMX6和MSI-X或者有任何经验 多个MSI?

0 个答案:

没有答案