要描述一个pci设备,就需要知道设备的厂商号(venderId)、设备号(devId)和class号。那么,在Linux系统中,如何获取这三个数据呢? 既然是一个pci设备,那么首先就得知道BDF——该pci设备在OS中的唯一标识符。以网卡举例,我们可以通过ethtool来得到BDF。其中,bus-info对应的信息就是BDF。
# ethtool -i p12p1
driver: ixgbe
version: 4.0.1-k
firmware-version: 0x800003e1
bus-info: 0000:11:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
厂商号和设备号
可通过lspci命令获取pci设备的厂商号和设备号。
# lspci -n -s 11:00.0
11:00.0 0200: 8086:1528 (rev 01)
其中,8086就是厂商号,1528就是设备号。
# lspci | grep 11:00.0
11:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
当然,也可以通过上面的方法直接使用lspci命令来查看该设备的基础信息。上面可以看出,这是一个intel的网卡设备,X540网卡。
class号
一