]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
MdeModulePkg/PciBusDxe: Fix small memory leak in FreePciDevice
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / PciBusDxe / PciEnumerator.c
index 469a2ddb8ac01b2b3cf09c0f9fea94c01424b051..f44db01a9dea280f8eec49d09237c0da1f6fb3d2 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   PCI eunmeration implementation on entire PCI bus system for PCI Bus module.\r
 \r
-Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
@@ -19,7 +19,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
   This routine is used to enumerate entire pci bus system\r
   in a given platform.\r
 \r
-  @param Controller  Parent controller handle.\r
+  @param Controller          Parent controller handle.\r
+  @param HostBridgeHandle    Host bridge handle.\r
 \r
   @retval EFI_SUCCESS    PCI enumeration finished successfully.\r
   @retval other          Some error occurred when enumerating the pci bus system.\r
@@ -27,41 +28,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 EFI_STATUS\r
 PciEnumerator (\r
-  IN EFI_HANDLE                    Controller\r
+  IN EFI_HANDLE                    Controller,\r
+  IN EFI_HANDLE                    HostBridgeHandle\r
   )\r
 {\r
-  EFI_HANDLE                                        HostBridgeHandle;\r
   EFI_STATUS                                        Status;\r
   EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *PciResAlloc;\r
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL                   *PciRootBridgeIo;\r
-\r
-  //\r
-  // If PCI bus has already done the full enumeration, never do it again\r
-  //\r
-  if (!gFullEnumeration) {\r
-    return PciEnumeratorLight (Controller);\r
-  }\r
-\r
-  //\r
-  // Get the rootbridge Io protocol to find the host bridge handle\r
-  //\r
-  Status = gBS->OpenProtocol (\r
-                  Controller,\r
-                  &gEfiPciRootBridgeIoProtocolGuid,\r
-                  (VOID **) &PciRootBridgeIo,\r
-                  gPciBusDriverBinding.DriverBindingHandle,\r
-                  Controller,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Get the host bridge handle\r
-  //\r
-  HostBridgeHandle = PciRootBridgeIo->ParentHandle;\r
 \r
   //\r
   // Get the pci host bridge resource allocation protocol\r
@@ -132,18 +104,6 @@ PciEnumerator (
     return Status;\r
   }\r
 \r
-  gFullEnumeration = FALSE;\r
-\r
-  Status = gBS->InstallProtocolInterface (\r
-                  &HostBridgeHandle,\r
-                  &gEfiPciEnumerationCompleteProtocolGuid,\r
-                  EFI_NATIVE_INTERFACE,\r
-                  NULL\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -227,7 +187,7 @@ PciRootBridgeEnumerator (
       AddrRangeMin = Configuration1->AddrRangeMin;\r
       Configuration1->AddrRangeMin = Configuration2->AddrRangeMin;\r
       Configuration2->AddrRangeMin = AddrRangeMin;\r
-      \r
+\r
       AddrLen = Configuration1->AddrLen;\r
       Configuration1->AddrLen = Configuration2->AddrLen;\r
       Configuration2->AddrLen = AddrLen;\r
@@ -274,7 +234,7 @@ PciRootBridgeEnumerator (
   Status = PciAllocateBusNumber (RootBridgeDev, SubBusNumber, PaddedBusRange, &SubBusNumber);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
-  }  \r
+  }\r
 \r
   //\r
   // Find the bus range which contains the higest bus number, then returns the number of buses\r
@@ -292,7 +252,7 @@ PciRootBridgeEnumerator (
   Configuration++;\r
   Desc = Configuration->Desc;\r
   Configuration->Desc = ACPI_END_TAG_DESCRIPTOR;\r
-  \r
+\r
   //\r
   // Set bus number\r
   //\r
@@ -307,7 +267,7 @@ PciRootBridgeEnumerator (
   //\r
   Configuration->Desc = Desc;\r
   (Configuration - 1)->AddrLen = AddrLen;\r
-  \r
+\r
   return Status;\r
 }\r
 \r
@@ -962,7 +922,7 @@ GetMaxResourceConsumerDevice (
   @param Mem64ResStatus   Status of 64-bit memory resource node.\r
   @param PMem64ResStatus  Status of 64-bit Prefetchable memory resource node.\r
 \r
-  @retval EFI_SUCCESS     Successfully adjusted resoruce on host bridge.\r
+  @retval EFI_SUCCESS     Successfully adjusted resource on host bridge.\r
   @retval EFI_ABORTED     Host bridge hasn't this resource type or no resource be adjusted.\r
 \r
 **/\r
@@ -1091,7 +1051,7 @@ PciHostBridgeAdjustAllocation (
 }\r
 \r
 /**\r
-  Summary requests for all resource type, and contruct ACPI resource\r
+  Summary requests for all resource type, and construct ACPI resource\r
   requestor instance.\r
 \r
   @param Bridge           detecting bridge\r
@@ -1103,7 +1063,7 @@ PciHostBridgeAdjustAllocation (
   @param Config           Output buffer holding new constructed APCI resource requestor\r
 \r
   @retval EFI_SUCCESS           Successfully constructed ACPI resource.\r
-  @retval EFI_OUT_OF_RESOURCES  No memory availabe.\r
+  @retval EFI_OUT_OF_RESOURCES  No memory available.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -1852,7 +1812,7 @@ NotifyPhase (
                             Phase,\r
                             ChipsetEntry\r
                             );\r
-  }  \r
+  }\r
 \r
   Status = PciResAlloc->NotifyPhase (\r
                           PciResAlloc,\r
@@ -2083,7 +2043,7 @@ PciHotPlugRequestNotify (
       return EFI_INVALID_PARAMETER;\r
     }\r
   }\r
-  \r
+\r
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiPciIoProtocolGuid,\r