I have device on bus PCI 09 behind bus 08:01 like this:
0000:08:01.0 -> ../../../devices/pci0000:00/0000:00:03.0/0000:07:00.0/0000:08:01.0/0000:09:00.0
My device in bus 09 off and after reboot CPU, I turn on device on bus 09. So, I rescan PCI bus 0000:08:01.0. But it doesn't find my device.
bus 08:01 after reboot:
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
I noticed there isn't "Prefetchable memory behind bridge" field like this:
#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 only find device in bus 09 when I turn on device before reboot. Is there any way for the CPU to find the device on PCI bus after reboot? Or how can I assign memory behind bridge on bus 0000:08:01.0 without device when CPU boots?