识别 PCI 设备是 PCI 还是 PCIe

问题描述

我需要能够在运行时识别给定的 PCI 设备是快速的还是非快速的。识别此问题的一种可能方法获取配置空间并检查扩展部分。如果存在扩展部分,则它是 PCIe 卡。具体来说,我会检查前四个字节,看看它们是否是规范要求的 0x100

这是验证所用卡片类型的最佳方法吗?我的假设是否正确?

解决方法

我认为最好的方法是寻找 PCI Express 功能,它位于常规功能空间中,而不是扩展空间中。此功能的存在表示 PCIe 设备。能力 ID 为 0x10。