From: Olivier Martin Date: Thu, 18 Jul 2013 07:21:35 +0000 (+0000) Subject: The PCI host bridge can signal failures in its initialization to X-Git-Tag: edk2-stable201903~12423 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=ea8d98fa9f862ba533448983f81a79e4e71008f5;hp=591fb3781aa5947ab05332463a22d3f660714fec The PCI host bridge can signal failures in its initialization to the PCI Bus driver through the function call NotifyPhase(). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin Reviewed-by: Ruiyu Ni git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14483 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c index bd1e680466..ee6656de70 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c @@ -82,7 +82,11 @@ PciEnumerator ( // // Notify the pci bus enumeration is about to begin // - NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginEnumeration); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginEnumeration); + + if (EFI_ERROR (Status)) { + return Status; + } // // Start the bus allocation phase @@ -105,7 +109,11 @@ PciEnumerator ( // // Notify the pci bus enumeration is about to complete // - NotifyPhase (PciResAlloc, EfiPciHostBridgeEndEnumeration); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeEndEnumeration); + + if (EFI_ERROR (Status)) { + return Status; + } // // Process P2C diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c index 9e1184e00a..a5cea9e52a 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c @@ -759,7 +759,11 @@ PciHostBridgeResourceAllocator ( // // Notify pci bus driver starts to program the resource // - NotifyPhase (PciResAlloc, EfiPciHostBridgeSetResources); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeSetResources); + + if (EFI_ERROR (Status)) { + return Status; + } RootBridgeDev = NULL; @@ -898,9 +902,9 @@ PciHostBridgeResourceAllocator ( // // Notify the resource allocation phase is to end // - NotifyPhase (PciResAlloc, EfiPciHostBridgeEndResourceAllocation); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeEndResourceAllocation); - return EFI_SUCCESS; + return Status; } /** @@ -1443,7 +1447,11 @@ PciHostBridgeEnumerator ( // // Notify the bus allocation phase is about to start // - NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginBusAllocation); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginBusAllocation); + + if (EFI_ERROR (Status)) { + return Status; + } DEBUG((EFI_D_INFO, "PCI Bus First Scanning\n")); RootBridgeHandle = NULL; @@ -1531,7 +1539,11 @@ PciHostBridgeEnumerator ( // // Notify the bus allocation phase is about to start for the 2nd time // - NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginBusAllocation); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginBusAllocation); + + if (EFI_ERROR (Status)) { + return Status; + } DEBUG((EFI_D_INFO, "PCI Bus Second Scanning\n")); RootBridgeHandle = NULL; @@ -1569,7 +1581,11 @@ PciHostBridgeEnumerator ( // // Notify the resource allocation phase is to start // - NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginResourceAllocation); + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeBeginResourceAllocation); + + if (EFI_ERROR (Status)) { + return Status; + } RootBridgeHandle = NULL; while (PciResAlloc->GetNextRootBridge (PciResAlloc, &RootBridgeHandle) == EFI_SUCCESS) {