gpt4 book ai didi

linux - 从 SMBIOS 了解段组、总线、设备和功能编号

转载 作者:IT王子 更新时间:2023-10-29 00:19:57 26 4
gpt4 key购买 nike

目标

我正在尝试以编程方式找出特定 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.20000:05:03.0。通过手动检查,我知道如下:

  1. 0000:03:00.0 在第一个插槽中。 PCI 桥似乎是 0000:00:02.0
  2. 0000:04:00.0 在第二个插槽中。 PCI 桥似乎是 0000:00:02.2
  3. 0000:05:00.0 在第三个插槽中。 PCI 桥似乎是 0000:00:03.0

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

这种模式是我主板上的巧合还是背后有一定的道理?它是华硕主板,带有 AMI BIOS。我读到一些 BIOS 不提供有关其插槽的准确信息,因此我想知道我可以实现多少通用性。

也非常感谢任何指向引用文档的提示或指针。

最佳答案

您可能会发现 lspci 命令很有帮助。这是一个示例输出:

# lspci -v -t
-[0000:00]-+-00.0 Intel Corporation 5500 I/O Hub to ESI Port
+-01.0-[01]--+-00.0 Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
| \-00.1 Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
+-03.0-[02]--+-00.0 Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
| \-00.1 Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
+-07.0-[04]----00.0 LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator]
+-09.0-[05]----00.0 LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator]
+-14.0 Intel Corporation 7500/5520/5500/X58 I/O Hub System Management Registers
+-14.1 Intel Corporation 7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers
+-14.2 Intel Corporation 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers
+-1a.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4
+-1a.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5
+-1a.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2
+-1c.0-[03]----00.0 LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator]
+-1d.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1
+-1d.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2
+-1d.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1
+-1e.0-[06]----03.0 Matrox Electronics Systems Ltd. MGA G200eW WPCM450
+-1f.0 Intel Corporation 82801IB (ICH9) LPC Interface Controller
\-1f.2 Intel Corporation 82801IB (ICH9) 2 port SATA Controller [IDE mode]

关于linux - 从 SMBIOS 了解段组、总线、设备和功能编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com