diff options
| author | Michael Brown | 2025-11-24 21:27:53 +0100 |
|---|---|---|
| committer | Michael Brown | 2025-11-25 00:25:31 +0100 |
| commit | dfea3bbfad75aa742623beb4d88e2be086a4b8ee (patch) | |
| tree | f04cae9203f88f7ae3c4fc176bb56aaef38c89fa /src/interface | |
| parent | [pci] Allow probing permission to vary by range (diff) | |
| download | ipxe-dfea3bbfad75aa742623beb4d88e2be086a4b8ee.tar.gz ipxe-dfea3bbfad75aa742623beb4d88e2be086a4b8ee.tar.xz ipxe-dfea3bbfad75aa742623beb4d88e2be086a4b8ee.zip | |
[pci] Use runtime selectable PCI I/O API for EFI cloud builds
On some systems (observed on an AWS m8g.medium instance in eu-west-2),
the UEFI firmware omits the PCI host bridge drivers for all but the
first PCI bus. The observable result is that any devices on other PCI
buses (such as the ENA network device) are not enumerated by the UEFI
firmware and are therefore unusable by iPXE.
Support these systems by switching to using PCIAPI_CLOUD for EFI cloud
builds, trying the EFI PCI I/O API first and falling back to direct
access (via ECAM) for devices that the UEFI firmware has failed to
enumerate itself.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface')
| -rw-r--r-- | src/interface/efi/efi_pci.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/interface/efi/efi_pci.c b/src/interface/efi/efi_pci.c index fbf06300b..f4853c234 100644 --- a/src/interface/efi/efi_pci.c +++ b/src/interface/efi/efi_pci.c @@ -436,6 +436,7 @@ PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_byte ); PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_word ); PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_dword ); PROVIDE_PCIAPI ( efi, pci_ioremap, efipci_ioremap ); +PROVIDE_PCIAPI_RUNTIME ( efi, PCIAPI_PRIORITY_EFI ); /****************************************************************************** * |
