Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Foster > Nong > Sent: Friday, July 22, 2022 5:10 PM > To: devel@edk2.groups.io > Cc: Nong, Foster <foster.n...@intel.com> > Subject: [edk2-devel] [PATCH 1/1] MdeModulePkg: Enhance bus scan for all > root bridge instances > > Ref:https://bugzilla.tianocore.org/show_bug.cgi?id=4000 > > Change flow to bus scan all root bridge instances even when any > one root bridge meet bus resource OUT_OF_RESOURCE case. > thus platform handler of "EfiPciHostBridgeEndBusAllocation" has > an chance to do relative pci bus rebalance to handle this case. > > Signed-off-by: Foster Nong <foster.n...@intel.com> > --- > MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c > b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c > index 63d149b3b8c0..a89f912de85b 100644 > --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c > +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c > @@ -1528,6 +1528,7 @@ PciHostBridgeEnumerator ( > UINT8 StartBusNumber; > LIST_ENTRY RootBridgeList; > LIST_ENTRY *Link; > + EFI_STATUS RootBridgeEnumerationStatus; > > if (FeaturePcdGet (PcdPciBusHotplugDeviceSupport)) { > InitializeHotPlugSupport (); > @@ -1546,6 +1547,7 @@ PciHostBridgeEnumerator ( > > DEBUG ((DEBUG_INFO, "PCI Bus First Scanning\n")); > RootBridgeHandle = NULL; > + RootBridgeEnumerationStatus = EFI_SUCCESS; > while (PciResAlloc->GetNextRootBridge (PciResAlloc, &RootBridgeHandle) > == EFI_SUCCESS) { > // > // if a root bridge instance is found, create root bridge device for it > @@ -1572,7 +1574,7 @@ PciHostBridgeEnumerator ( > } > > if (EFI_ERROR (Status)) { > - return Status; > + RootBridgeEnumerationStatus = Status; > } > } > > @@ -1581,6 +1583,10 @@ PciHostBridgeEnumerator ( > // > NotifyPhase (PciResAlloc, EfiPciHostBridgeEndBusAllocation); > > + if (EFI_ERROR (RootBridgeEnumerationStatus)) { > + return RootBridgeEnumerationStatus; > + } > + > if ((gPciHotPlugInit != NULL) && FeaturePcdGet > (PcdPciBusHotplugDeviceSupport)) { > // > // Reset all assigned PCI bus number in all PPB > @@ -1659,7 +1665,7 @@ PciHostBridgeEnumerator ( > > DestroyRootBridge (RootBridgeDev); > if (EFI_ERROR (Status)) { > - return Status; > + RootBridgeEnumerationStatus = Status; > } > } > > @@ -1667,6 +1673,10 @@ PciHostBridgeEnumerator ( > // Notify the bus allocation phase is to end for the 2nd time > // > NotifyPhase (PciResAlloc, EfiPciHostBridgeEndBusAllocation); > + > + if (EFI_ERROR (RootBridgeEnumerationStatus)) { > + return RootBridgeEnumerationStatus; > + } > } > > // > -- > 2.26.2.windows.1 > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#92294): https://edk2.groups.io/g/devel/message/92294 Mute This Topic: https://groups.io/mt/92558124/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-