我在总线 08:01 后面的总线 PCI 09 上有设备,如下所示:
0000:08:01.0 -> ../../../devices/pci0000:00/0000:00:03.0/0000:07:00.0/0000:08:01.0/0000:09:00.0
我在总线 09 上的设备关闭并重新启动 CPU 后,我打开总线 09 上的设备。所以,我重新扫描 PCI 总线 0000:08:01.0。但它没有找到我的设备。
巴士 08:01 重启后:
root@localhost:~# lspci -s 0000\:08\:01.0 -v
08:01.0 PCI bridge: PLX Technology, Inc. PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=08, secondary=09, subordinate=09, sec-latency=0
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable+ Count=1/4 Maskable+ 64bit+
Capabilities: [68] Express Downstream Port (Slot+), MSI 00
Capabilities: [a4] Subsystem: PLX Technology, Inc. PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch
Capabilities: [100] Device Serial Number ba-86-01-10-b5-df-0e-00
Capabilities: [fb4] Advanced Error Reporting
Capabilities: [148] Virtual Channel
Capabilities: [520] Access Control Services
Capabilities: [950] Vendor Specific Information: ID=0001 Rev=0 Len=010 <?>
Kernel driver in use: pcieport
我注意到没有像这样的“桥后可预取内存”字段:
#lspci -s 0000\:01\:00.0 -v
01:00.0 Class 0604: Device 10b5:8617 (rev ba)
Flags: bus master, fast devsel, latency 0, IRQ 9
Memory at c4b00000 (32-bit, non-prefetchable) [size=128K]
Bus: primary=01, secondary=02, subordinate=05, sec-latency=0
I/O behind bridge: None
Memory behind bridge: c0000000-c4afffff [size=75M]
Prefetchable memory behind bridge: 00000000c4c00000-00000000c96fffff [size=75M]
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable- Count=1/4 Maskable+ 64bit+
Capabilities: [68] Express Upstream Port, MSI 00
Capabilities: [a4] Subsystem: Device 10b5:8617
Capabilities: [100] Device Serial Number ba-86-01-10-b5-df-0e-00
Capabilities: [fb4] Advanced Error Reporting
Capabilities: [138] Power Budgeting <?>
Capabilities: [148] Virtual Channel
Capabilities: [950] Vendor Specific Information: ID=0001 Rev=0 Len=010 <?>
Kernel driver in use: pcieport
当我在重新启动前打开设备时,CPU 只能在总线 09 中找到设备。重启后CPU有什么办法可以在PCI总线上找到设备?或者,当 CPU 启动时,如何在没有设备的情况下在总线 0000:08:01.0 的桥后分配内存?