aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2021-04-10 13:14:30 +0100
committerMichael Brown <mcb30@ipxe.org>2021-04-10 15:05:05 +0100
commit0be8491b717fec6697dbf6ef8ac07604e062ecb1 (patch)
tree1f5d84a13dbd6113e7e884a2795e6e01cdda3a31 /src/arch
parentc0346dbb49de0bb6c7637c511a175ce478aca9b9 (diff)
downloadipxe-0be8491b717fec6697dbf6ef8ac07604e062ecb1.zip
ipxe-0be8491b717fec6697dbf6ef8ac07604e062ecb1.tar.gz
ipxe-0be8491b717fec6697dbf6ef8ac07604e062ecb1.tar.bz2
[pci] Avoid scanning nonexistent buses when using PCIAPI_DIRECT
There is no method for obtaining the number of PCI buses when using PCIAPI_DIRECT, and we therefore currently scan all possible bus numbers. This can cause a several-second startup delay in some virtualised environments, since PCI configuration space access will necessarily require the involvement of the hypervisor. Ameliorate this situation by defaulting to scanning only a single bus, and expanding the number of PCI buses to accommodate any subordinate buses that are detected during enumeration. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/include/ipxe/pcidirect.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/arch/x86/include/ipxe/pcidirect.h b/src/arch/x86/include/ipxe/pcidirect.h
index 9570fd7..decdc81 100644
--- a/src/arch/x86/include/ipxe/pcidirect.h
+++ b/src/arch/x86/include/ipxe/pcidirect.h
@@ -32,8 +32,8 @@ extern void pcidirect_prepare ( struct pci_device *pci, int where );
*/
static inline __always_inline int
PCIAPI_INLINE ( direct, pci_num_bus ) ( void ) {
- /* No way to work this out via Type 1 accesses */
- return 0x100;
+ /* Scan first bus and rely on bridge detection to find higher buses */
+ return 1;
}
/**