From dfea3bbfad75aa742623beb4d88e2be086a4b8ee Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 24 Nov 2025 20:27:53 +0000 Subject: [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 --- src/interface/efi/efi_pci.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/interface') 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 ); /****************************************************************************** * -- cgit v1.2.3-55-g7522