0

我正在尝试让 MSI-X 在 Linux v4.1 中的 iMX6 (Freescale/NXP/Qualcomm) CPU 上运行,用于 PCIe 字符设备驱动程序。每当我调用pci_enable_msix()or pci_enable_msix_range()or时,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 有任何经验吗?
4

0 回答 0