[pci] Support systems with multiple PCI root bridges

Extend the 16-bit PCI bus:dev.fn address to a 32-bit seg:bus:dev.fn
address, assuming a segment value of zero in contexts where multiple
segments are unsupported by the underlying data structures (e.g. in
the iBFT or BOFM tables).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2016-06-09 09:36:28 +01:00
parent 2c197517f2
commit f76210961c
9 changed files with 160 additions and 42 deletions

View File

@@ -313,12 +313,12 @@ int bofm ( userptr_t bofmtab, struct pci_device *pci ) {
}
DBG ( "BOFM: slot %d port %d%s is " PCI_FMT " mport %d\n",
en.slot, ( en.port + 1 ),
( ( en.slot || en.port ) ? "" : "(?)" ),
( ( en.slot || en.port ) ? "" : "(?)" ), 0,
PCI_BUS ( en.busdevfn ), PCI_SLOT ( en.busdevfn ),
PCI_FUNC ( en.busdevfn ), en.mport );
bofm = bofm_find_busdevfn ( en.busdevfn );
if ( ! bofm ) {
DBG ( "BOFM: " PCI_FMT " mport %d ignored\n",
DBG ( "BOFM: " PCI_FMT " mport %d ignored\n", 0,
PCI_BUS ( en.busdevfn ), PCI_SLOT ( en.busdevfn ),
PCI_FUNC ( en.busdevfn ), en.mport );
continue;