diff --git a/src/config/cloud/ioapi.h b/src/config/cloud/ioapi.h index bcd245981..3ab05082f 100644 --- a/src/config/cloud/ioapi.h +++ b/src/config/cloud/ioapi.h @@ -8,3 +8,13 @@ #define PCIAPI_RUNTIME_PCBIOS #define PCIAPI_RUNTIME_DIRECT #endif + +/* Work around missing PCI host bridge drivers in the cut-down UEFI found + * in some AWS EC2 instances. + */ +#ifdef PLATFORM_efi +#undef PCIAPI_EFI +#define PCIAPI_CLOUD +#define PCIAPI_RUNTIME_EFI +#define PCIAPI_RUNTIME_ECAM +#endif diff --git a/src/config/config_pci.c b/src/config/config_pci.c index 8ed9f6603..b2adae995 100644 --- a/src/config/config_pci.c +++ b/src/config/config_pci.c @@ -45,3 +45,6 @@ REQUIRE_OBJECT ( pcibios ); #ifdef PCIAPI_RUNTIME_DIRECT REQUIRE_OBJECT ( pcidirect ); #endif +#ifdef PCIAPI_RUNTIME_EFI +REQUIRE_OBJECT ( efi_pci ); +#endif diff --git a/src/include/ipxe/pci_io.h b/src/include/ipxe/pci_io.h index 0d32adf81..7ac09efb0 100644 --- a/src/include/ipxe/pci_io.h +++ b/src/include/ipxe/pci_io.h @@ -192,9 +192,10 @@ struct pci_api { #endif /* PCI runtime selectable API priorities */ -#define PCIAPI_PRIORITY_ECAM 01 /**< ACPI ECAM */ -#define PCIAPI_PRIORITY_PCBIOS 02 /**< PCI BIOS calls */ -#define PCIAPI_PRIORITY_DIRECT 03 /**< Direct Type 1 accesses */ +#define PCIAPI_PRIORITY_EFI 01 /**< EFI PCI I/O protocols */ +#define PCIAPI_PRIORITY_ECAM 02 /**< ACPI ECAM */ +#define PCIAPI_PRIORITY_PCBIOS 03 /**< PCI BIOS calls */ +#define PCIAPI_PRIORITY_DIRECT 04 /**< Direct Type 1 accesses */ /** Provide a runtime selectable PCI I/O API */ #define PROVIDE_PCIAPI_RUNTIME( subsys, priority ) \ 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 ); /****************************************************************************** *