背景
使用lspci命令是如何从PCIe配置空间读取出来厂商字符串信息的?
pcie设备的配置空间常规的只有64bytes,而使用lspci可以详细的关于该设备的字符串信息。这些信息并不是存储在配置空间,而是根据系统中配置文件数据库,根据vendor id和device id获取的。本文简单介绍该文件路径,方式。
现象
图中黄框部分如何获取的?
分析
lspci命令执行后,host会向pcie发起枚举行为,会给每个设备读取配置空间的TLP报文,并读取回来。然后展示到界面。对于简单的lspci不带任何参数,会根据扫描到的设备的vendor id和device id从系统中匹配,如果匹配到之后就展示到图中黄框部分。
系统中读取配置的地方是在:/usr/share/hwdata/pci.ids
打开查看:可以看到当前文件的更新时间,以及官网下载更新的地方,以及语法格式。
详细的例子:
比如查看A开头的比如Alibaba的PCIe的信息,vendorid是 1ded,向PCIe sig申请了7个deviceid
比如查看Mellanox的信息相当的多:20973-20732+1=242个,而且这还是2022的信息。
如何查看最新的
https://pci-ids.ucw.cz/
综述
本文记录了lspci读取配置信息的展示机制以及详细路径。了解该部分,对于有些最新的PCIe设备如果展示不完全,可能就是这里的问题。了解底层机制更灵活的应对变化