如何解决如何在Linux中读取扩展的PCIE配置空间?
| 我已经尝试读取/ proc / bus / pci目录下的用户空间pci条目,并在驱动程序中调用内核空间API pci_read_config_word()。但似乎两者都只能读取pci基本配置空间,偏移量小于0x100。 我想读取的偏移量超出了0x100,有人可以告诉我如何在Linux中执行偏移量吗?如果是在内核空间中完成的话,告诉您要调用哪个API会非常感谢。非常感谢你!解决方法
pci_read_config_word()
是正确的API,但是要访问扩展的配置空间,您需要使用MMCONFIG。这不是您设置的内容;如果可用,内核应该选择自己使用MMCONFIG。你看到类似的东西吗
e0000000-efffffff : PCI MMCONFIG 0000 [bus 00-ff]
在/proc/iomem
?同样在内核日志中,您应该看到有关ACPI MCFG表和MMCONFIG的几行:
ACPI: MCFG 00000000bb7fec63 0003C (v01 LENOVO TP-6U 00001410 LNVO 00000001)
...
PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
当然,您的内核需要用CONFIG_PCI_MMCONFIG=y
构建。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。