<div dir="ltr">Hi all,<div><br></div><div>Is there any documentation around describing how coreboot scans for PCI Express buses and devices?</div><div><br></div><div>I have an expansion module for the Intense PC I'd like to get working with Coreboot. The expansion module adds 4 Intel Gigabit Ethernet interfaces (82574L) via PCI Express 4 PCIe ports. All interfaces are on the same physical FACE module.</div><div><br></div><div>In the vendor firmware, all four cards are properly detected:</div><div><div>01:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection</div><div>03:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection</div></div><div><div>06:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection</div><div>07:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection</div></div><div><br></div><div>But in coreboot, only the first two cards are detected:</div><div><div>01:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection</div><div>03:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection</div></div><div><br></div><div>It seems from the coreboot uart output that coreboot isn't scanning PCIe buses 6 & 7. Looking at pci_scan_bus in src/device/pci_device.c it seems coreboot should be recursively scanning PCI bridges for any devices behind them. The lspci output from the vendor firmware and coreboot lists the same number of PCI bridges:</div><div><div>00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)</div><div>00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)</div></div><div><br></div><div>From the boot logs, it seems that coreboot stops scanning after PCI bus 05:</div><div><br></div><div><div>PCI: pci_scan_bus for bus 01</div><div>PCI: 01:00.0 [8086/10d3] enabled</div><div>Enabling Common Clock Configuration</div><div>PCIE CLK PM is not supported by endpoint</div><div>ASPM: Enabled L0s and L1</div><div>Failed to enable LTR for dev = PCI: 01:00.0</div><div>scan_bus: scanning of bus PCI: 00:01.0 took 18672 usecs</div><div>PCI: pci_scan_bus for bus 02</div><div>scan_bus: scanning of bus PCI: 00:01.1 took 2609 usecs</div><div>PCI: pci_scan_bus for bus 03</div><div>PCI: 03:00.0 [8086/10d3] enabled</div></div><div>...</div><div><div>PCI: pci_scan_bus for bus 05</div><div>PCI: 05:00.0 [10ec/8168] enabled</div><div>Enabling Common Clock Configuration</div><div>ASPM: Enabled L1</div><div>Failed to enable LTR for dev = PCI: 05:00.0</div><div>scan_bus: scanning of bus PCI: 00:1c.2 took 14395 usecs</div><div>scan_bus: scanning of bus PCI: 00:1f.0 took 2 usecs</div><div>scan_bus: scanning of bus PCI: 00:1f.3 took 2 usecs</div><div>scan_bus: scanning of bus DOMAIN: 0000 took 222594 usecs</div><div>scan_bus: scanning of bus Root Device took 231592 usecs</div><div>done</div><div>BS: BS_DEV_ENUMERATE times (us): entry 0 run 238973 exit 0</div><div>found VGA at PCI: 00:02.0</div><div>Setting up VGA for PCI: 00:02.0</div><div>Setting PCI_BRIDGE_CTL_VGA for bridge DOMAIN: 0000</div><div>Setting PCI_BRIDGE_CTL_VGA for bridge Root Device</div><div>Allocating resources...</div><div>Reading resources...</div><div>Adding PCIe enhanced config space BAR 0xf8000000-0xfc000000.</div><div>Done reading resources.</div></div><div><br></div><div>I grepped in src/ but couldn't find where the min/max PCI bus IDs are set.</div><div><br></div><div>Given that these work with the vendor firmware, and they appear to be on buses above what coreboot normally initializes (at least from my log output), I'm wondering how I can force coreboot to continue scanning/initializing PCIe buses above bus 05.</div><div><br></div><div>Thanks,</div><div>Hal</div></div>