pci_find_capability返回0:“设备不支持它”

时间:2019-08-26 21:54:41

标签: c linux linux-kernel linux-device-driver pci

我用pci_find_capability呼叫PCI_CAP_ID_EXP,返回码为零,这意味着:

  

告诉设备是否支持给定的PCI功能。返回设备的PCI配置空间内请求的功能结构的地址;如果设备不支持,则返回0。

为什么设备不支持?

 int pcie_cap_addr = pci_find_capability(pdev, PCI_CAP_ID_EXP);

PCI_CAP_ID_EXP定义为0x10。

1 个答案:

答案 0 :(得分:1)

PCI_CAP_ID_EXP定义为0x10,这是PCI Express功能的功能ID。 PCI Express规范要求所有PCIe设备都实现此功能。因此,任何未实现的设备都不是PCIe设备。

如果您使用的系统足够旧,并且具有内置PCI插槽,那么它可能是PCI插槽中的PCI卡。

否则,它可能是PCIe-PCI桥后面的PCI设备,也可能是不使用任何新PCIe功能的根复杂集成设备(RCIEP),因此它将自己标识为PCI设备,而不是PCIe设备。 PCIe设备。