LINUX.ORG.RU

История изменений

Исправление sf, (текущая версия) :

Устройства сами экспортируют эти данные через MMIO. Можно (и нужно) читать процессором прямо оттуда.

$ sudo cat /proc/iomem |& fgrep MMCONFIG
  f0000000-f7ffffff : PCI MMCONFIG 0000 [bus 00-7f]

0xC8C / 0xC8E - legacy indirect PCI mode, адрeсует первые 256 байт из 4KB конфига. Не адрусет полный PCI-express.

https://wiki.osdev.org/PCI#Memory_Mapped_PCI_Configuration_Space_Access:

PCI Express introduced a new way to access PCI configuration space, where it’s simply memory mapped and no IO ports are used. This access mechanism is described in PCI Express.

https://wiki.osdev.org/PCI_Express#Extended_PCI_Bus_Numbering

Адрес MMCONFIG достается через ACPI ‘MCFG’ table:

# acpidump -b
$ iasl -d mcfg.dat

$ fgrep 'Base Add' mcfg.dsl
[02Ch 0044   8]                 Base Address : 00000000F0000000

Совпадает с /proc/iomem.

Исходная версия sf, :

Устройства сами экспортируют эти данные через MMIO. Можно (и нужно) читать процессором прямо оттуда.

$ sudo cat /proc/iomem |& fgrep MMCONFIG
  f0000000-f7ffffff : PCI MMCONFIG 0000 [bus 00-7f]

0xC8C / 0xC8E - legacy indirect PCI mode, адрeсует первые 256 байт из 4KB конфига. Не адрусет полный PCI-express.

https://wiki.osdev.org/PCI#Memory_Mapped_PCI_Configuration_Space_Access:

PCI Express introduced a new way to access PCI configuration space, where it’s simply memory mapped and no IO ports are used. This access mechanism is described in PCI Express.

Адрес MMCONFIG достается через ACPI ‘MCFG’ table:

# acpidump -b
$ iasl -d mcfg.dat

$ fgrep 'Base Add' mcfg.dsl
[02Ch 0044   8]                 Base Address : 00000000F0000000

Совпадает с [inline]/proc/iomem[/inline].