If VirtFdtDxe found no PCI host in the DTB, then the config space base address will be left at zero -- the default is set in the DSC --, and we should exit PciHostBridgeDxe immediately.
This causes gEfiPciRootBridgeIoProtocolGuid not to be installed, which in turn prevents MdeModulePkg/Bus/Pci/PciBusDxe from binding (see PciBusDriverBindingSupported()). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <[email protected]> Reviewed-by: Olivier Martin <[email protected]> --- Notes: v2: - drop gOvmfAcpiPlatformNoPciEnumerationProtocolGuid; now OvmfPkg/AcpiPlatformDxe is informed differently about the lack of a PCI host bridge [Jordan, Laszlo] ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf | 1 + ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf index be3200d..5497fa6 100644 --- a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf +++ b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf @@ -58,6 +58,7 @@ gArmPlatformTokenSpaceGuid.PcdPciIoTranslation gArmPlatformTokenSpaceGuid.PcdPciMmio32Base gArmPlatformTokenSpaceGuid.PcdPciMmio32Size + gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress [depex] gEfiMetronomeArchProtocolGuid diff --git a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c index ced7528..50f61cb 100644 --- a/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c +++ b/ArmPlatformPkg/ArmVirtualizationPkg/PciHostBridgeDxe/PciHostBridge.c @@ -85,6 +85,7 @@ PCI_HOST_BRIDGE_INSTANCE mPciHostBridgeInstanceTemplate = { @param ImageHandle Handle of driver image @param SystemTable Point to EFI_SYSTEM_TABLE + @retval EFI_ABORTED PCI host bridge not present @retval EFI_OUT_OF_RESOURCES Can not allocate memory resource @retval EFI_DEVICE_ERROR Can not install the protocol instance @retval EFI_SUCCESS Success to initialize the Pci host bridge. @@ -102,6 +103,11 @@ InitializePciHostBridge ( PCI_HOST_BRIDGE_INSTANCE *HostBridge; PCI_ROOT_BRIDGE_INSTANCE *PrivateData; + if (PcdGet64 (PcdPciExpressBaseAddress) == 0) { + DEBUG ((EFI_D_INFO, "%a: PCI host bridge not present\n", __FUNCTION__)); + return EFI_ABORTED; + } + mDriverImageHandle = ImageHandle; mResAperture[0][0].BusBase = PcdGet32 (PcdPciBusMin); -- 1.8.3.1 ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
