Определите устройство PCIe, используя конфигурационное пространство PCI - PullRequest
0 голосов
/ 25 апреля 2011

Учитывая список устройств PCI, установленных в системе, мне нужно идентифицировать устройства PCIe. До сих пор я использовал итерацию по списку возможностей, чтобы увидеть, имеет ли устройство расширенную структуру ограничения (которая соответствует идентификатору ограничения 0x10). И, если устройство имеет расширенную структуру крышки, то это точно устройство PCIe. Однако, похоже, что этот метод не может идентифицировать некоторые устройства. Мне было интересно, если кто-нибудь знает лучший метод.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 31 октября 2012

Я использовал следующий способ извлечения устройств PCIe:

  1. проверить, не зарегистрирован ли регистр конфигурации устройства PCI 0x6 бит4 = 1 (существует список возможностей)?
  2. проверить, что регистр конфигурации устройства PCI 0x34! = 0 (указатель возможностей действителен)?
  3. проверить, существует ли возможность PCIe (ID = 0x10)?

Если все вышеприведенное верно, то это устройство PCIe !!!

Мне любопытно, что «этот метод не может идентифицировать некоторые устройства»?

0 голосов
/ 30 сентября 2011

Сканирование устройства PCI / PCIE. Возможно наличие избыточных адресов в указателе возможностей (поврежденное пространство конфигурации PCI).

Проверьте, есть ли избыточность значений указателя возможностей во всех B: D:F-комбинации. Если вы обнаружили какие-либо проблемы, вы можете напрямую связаться с поставщиком BIOS, чтобы устранить их.

...