[edk2-devel] [PATCH 1/1] MdeModulePkg: Enhance bus scan for all root bridge instances

Ni, Ray ray.ni at intel.com
Wed Aug 10 07:54:42 UTC 2022


Reviewed-by: Ray Ni <ray.ni at intel.com>

> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Foster
> Nong
> Sent: Friday, July 22, 2022 5:10 PM
> To: devel at edk2.groups.io
> Cc: Nong, Foster <foster.nong at 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.nong at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list