Skip to content

Commit

Permalink
[efi] Fall back to assuming identity mapping of MMIO address space
Browse files Browse the repository at this point in the history
Some UEFI systems (observed with a Supermicro X11SPG-TF motherboard)
seem to fail to provide a valid ACPI address space descriptor for the
MMIO address space associated with a PCI root bridge.

If no valid descriptor can be found, fall back to assuming that the
MMIO address space is identity mapped, thereby matching the behaviour
prior to commit 27e886c ("[efi] Use address offset as reported by
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL").

Debugged-by: Tore Anderson <tore@fud.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Oct 30, 2020
1 parent 1687370 commit 9b25f6e
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions src/interface/efi/efi_pci.c
Expand Up @@ -244,7 +244,6 @@ void * efipci_ioremap ( struct pci_device *pci, unsigned long bus_addr,
uint64_t offset;
uint64_t start;
uint64_t end;
void *io_addr = NULL;
EFI_STATUS efirc;
int rc;

Expand Down Expand Up @@ -282,10 +281,9 @@ void * efipci_ioremap ( struct pci_device *pci, unsigned long bus_addr,
PCI_ARGS ( pci ), bus_addr, len );
bus_addr -= offset;
DBGC2 ( pci, "%08lx\n", bus_addr );
io_addr = ioremap ( bus_addr, len );
break;
}
if ( ! io_addr ) {
if ( tag == ACPI_END_RESOURCE ) {
DBGC ( pci, "EFIPCI " PCI_FMT " %08lx+%zx is not within "
"root bridge address space\n",
PCI_ARGS ( pci ), bus_addr, len );
Expand All @@ -294,7 +292,7 @@ void * efipci_ioremap ( struct pci_device *pci, unsigned long bus_addr,
err_config:
efipci_root_close ( handle );
err_root:
return io_addr;
return ioremap ( bus_addr, len );
}

PROVIDE_PCIAPI_INLINE ( efi, pci_num_bus );
Expand Down

0 comments on commit 9b25f6e

Please sign in to comment.