Linux下读取smBIOS源码,linux – 了解SMBIOS的段组,总线,设备和功能号码

目的

我正在尝试以编程方式找出特定PCIe设备连接的物理槽。前提是我有一个卡的PCI-ID肯定占据一个插槽,解决方案将会找出哪一个。

请注意,我只想对PCI Express总线进行工作,尽管我认为的设备识别/枚举过程与旧的PCI相同。

尝试

SMBIOS包含有关可用主板插槽的信息。可以从linux命令行检查这些信息:

$ sudo dmidecode -t slot

# dmidecode 2.11

SMBIOS 2.7 present.

Handle 0x003A, DMI type 9, 17 bytes

System Slot Information

Designation: PCIEX16_1

Type: x16 PCI Express x16

Current Usage: In Use

Length: Short

ID: 1

Characteristics:

3.3 V is provided

Opening is shared

PME signal is supported

Bus Address: 0000:03:02.0

Handle 0x003B, DMI type 9, 17 bytes

System Slot Information

Designation: PCIEX16_2

Type: x8 PCI Express x8

Current Usage: In Use

Length: Short

ID: 2

Characteristics:

3.3 V is provided

Opening is shared

PME signal is supported

Bus Address: 0000:04:02.2

Handle 0x003C, DMI type 9, 17 bytes

System Slot Information

Designation: PCIEX16_3

Type: x16 PCI Express x16

Current Usage: In Use

Length: Short

ID: 3

Characteristics:

3.3 V is provided

Opening is shared

PME signal is supported

Bus Address: 0000:05:03.0

但是,PCI总线(lspci)中找不到PCI ID为0000:03:02.0,0000:04:02.2或0000:05:03.0的任何设备。我通过手动检查知道如下:

>卡0000:03:00.0在第一个插槽。 PCI桥似乎是0000:00:02.0

>卡0000:04:00.0在第二个插槽。 PCI桥似乎是0000:00:02.2

>卡0000:05:00.0在第三个插槽。 PCI桥似乎是0000:00:03.0

所以在这里出现了一种模式。从SMBIOS结构来看,总线号是插入卡的总线号,但是设备/功能号与相应的PCI桥相同。

这个模式在我的主板上是巧合还是背后有理由?这是一个华硕主板,配有AMI BIOS。我读过一些BIOS没有提供关于它们的插槽的准确信息,所以我想知道我能实现多少通用性。

引用文件的任何提示或指针也不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值