On real hardware especially server platforms, there might be multiple
root buses, thus pci bus number could run up to 255. This patch fixed
pci_probe_devices() by allowing to scan all 256 pci bus numbers(0-255).

Signed-off-by: Bin Gao <gao...@amazon.com>
---
 src/hw/pcidevice.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/hw/pcidevice.c b/src/hw/pcidevice.c
index 8853cf7..8d9c401 100644
--- a/src/hw/pcidevice.c
+++ b/src/hw/pcidevice.c
@@ -26,6 +26,14 @@ pci_probe_devices(void)
     struct hlist_node **pprev = &PCIDevices.first;
     int extraroots = romfile_loadint("etc/extra-pci-roots", 0);
     int bus = -1, lastbus = 0, rootbuses = 0, count=0;
+
+    // There might be multiple PCI root buses on physical hardware especially
+    // server platforms, thus bus number could run up to the top value,
+    // i.e. 0xff. Setting extraroots to 0xff to ensure we can enumerate all
+    // PCI bus numbers.
+    if (CONFIG_CSM)
+        extraroots = 0xff;
+
     while (bus < 0xff && (bus < MaxPCIBus || rootbuses < extraroots)) {
         bus++;
         int bdf;
-- 
2.17.1
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to