]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Hand/DriverSupport.c
Update DxeCore for the performance infrastructure updates: Use Raw sting to replace...
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Hand / DriverSupport.c
index 930003304a8969af62b5a99d0f38de6be4d7e982..71676d0ef7fa250023d8f8f7db54af2431bae229 100644 (file)
@@ -12,62 +12,32 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 **/\r
 \r
-#include <DxeMain.h>\r
+#include "DxeMain.h"\r
+#include "Handle.h"\r
 \r
-//\r
-// Driver Support Function Prototypes\r
-// \r
-/**\r
-  Connects a controller to a driver.\r
-\r
-  @param  ControllerHandle                      Handle of the controller to be \r
-                                                connected. \r
-  @param  ContextDriverImageHandles             DriverImageHandle A pointer to an \r
-                                                ordered list of driver image \r
-                                                handles. \r
-  @param  RemainingDevicePath                   RemainingDevicePath A pointer to \r
-                                                the device path that specifies a \r
-                                                child  of the controller \r
-                                                specified by ControllerHandle. \r
-\r
-  @retval EFI_SUCCESS                           One or more drivers were \r
-                                                connected to ControllerHandle. \r
-  @retval EFI_OUT_OF_RESOURCES                  No enough system resources to \r
-                                                complete the request. \r
-  @retval EFI_NOT_FOUND                         No drivers were connected to \r
-                                                ControllerHandle.\r
-\r
-**/\r
-EFI_STATUS \r
-CoreConnectSingleController (\r
-  IN  EFI_HANDLE                ControllerHandle,\r
-  IN  EFI_HANDLE                *ContextDriverImageHandles OPTIONAL,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL  *RemainingDevicePath       OPTIONAL     \r
-  );\r
 \r
 //\r
 // Driver Support Functions\r
 //\r
-\r
 /**\r
   Connects one or more drivers to a controller.\r
 \r
-  @param  ControllerHandle                      Handle of the controller to be \r
-                                                connected. \r
-  @param  DriverImageHandle                     DriverImageHandle A pointer to an \r
-                                                ordered list of driver image \r
-                                                handles. \r
-  @param  RemainingDevicePath                   RemainingDevicePath A pointer to \r
-                                                the device path that specifies a \r
-                                                child of the controller specified \r
-                                                by ControllerHandle. \r
-  @param  Recursive                             Whether the function would be \r
-                                                called recursively or not. \r
+  @param  ControllerHandle                      Handle of the controller to be\r
+                                                connected.\r
+  @param  DriverImageHandle                     DriverImageHandle A pointer to an\r
+                                                ordered list of driver image\r
+                                                handles.\r
+  @param  RemainingDevicePath                   RemainingDevicePath A pointer to\r
+                                                the device path that specifies a\r
+                                                child of the controller specified\r
+                                                by ControllerHandle.\r
+  @param  Recursive                             Whether the function would be\r
+                                                called recursively or not.\r
 \r
   @return Status code.\r
 \r
 **/\r
-EFI_STATUS \r
+EFI_STATUS\r
 EFIAPI\r
 CoreConnectController (\r
   IN  EFI_HANDLE                ControllerHandle,\r
@@ -87,7 +57,7 @@ CoreConnectController (
   EFI_HANDLE                           *ChildHandleBuffer;\r
   UINTN                                ChildHandleCount;\r
   UINTN                                Index;\r
-  \r
+\r
   //\r
   // Make sure ControllerHandle is valid\r
   //\r
@@ -103,7 +73,11 @@ CoreConnectController (
   //\r
   AlignedRemainingDevicePath = NULL;\r
   if (RemainingDevicePath != NULL) {\r
-    AlignedRemainingDevicePath = CoreDuplicateDevicePath (RemainingDevicePath);\r
+    AlignedRemainingDevicePath = DuplicateDevicePath (RemainingDevicePath);\r
+\r
+    if (AlignedRemainingDevicePath == NULL) {\r
+      return EFI_OUT_OF_RESOURCES;\r
+    }\r
   }\r
 \r
   //\r
@@ -114,10 +88,10 @@ CoreConnectController (
   //\r
   do {\r
     ReturnStatus = CoreConnectSingleController (\r
-                    ControllerHandle,\r
-                    DriverImageHandle,\r
-                    AlignedRemainingDevicePath\r
-                    );\r
+                     ControllerHandle,\r
+                     DriverImageHandle,\r
+                     AlignedRemainingDevicePath\r
+                     );\r
   } while (ReturnStatus == EFI_NOT_READY);\r
 \r
   //\r
@@ -155,8 +129,8 @@ CoreConnectController (
     //\r
     for (Link = Handle->Protocols.ForwardLink, ChildHandleCount = 0; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
       Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
-      for (ProtLink = Prot->OpenList.ForwardLink; \r
-          ProtLink != &Prot->OpenList; \r
+      for (ProtLink = Prot->OpenList.ForwardLink;\r
+          ProtLink != &Prot->OpenList;\r
           ProtLink = ProtLink->ForwardLink) {\r
         OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
         if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
@@ -168,15 +142,19 @@ CoreConnectController (
     //\r
     // Allocate a handle buffer for ControllerHandle's children\r
     //\r
-    ChildHandleBuffer = CoreAllocateBootServicesPool (ChildHandleCount * sizeof(EFI_HANDLE));\r
+    ChildHandleBuffer = AllocatePool (ChildHandleCount * sizeof(EFI_HANDLE));\r
+    if (ChildHandleBuffer == NULL) {\r
+      CoreReleaseProtocolLock ();\r
+      return EFI_OUT_OF_RESOURCES;\r
+    }\r
 \r
     //\r
     // Fill in a handle buffer with ControllerHandle's children\r
     //\r
     for (Link = Handle->Protocols.ForwardLink, ChildHandleCount = 0; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
       Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
-      for (ProtLink = Prot->OpenList.ForwardLink; \r
-          ProtLink != &Prot->OpenList; \r
+      for (ProtLink = Prot->OpenList.ForwardLink;\r
+          ProtLink != &Prot->OpenList;\r
           ProtLink = ProtLink->ForwardLink) {\r
         OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
         if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
@@ -200,7 +178,7 @@ CoreConnectController (
         NULL,\r
         NULL,\r
         TRUE\r
-        ); \r
+        );\r
     }\r
 \r
     //\r
@@ -217,17 +195,17 @@ CoreConnectController (
   Add Driver Binding Protocols from Context Driver Image Handles to sorted\r
   Driver Binding Protocol list.\r
 \r
-  @param  DriverBindingHandle                   Handle of the driver binding \r
-                                                protocol. \r
-  @param  NumberOfSortedDriverBindingProtocols  Number Of sorted driver binding \r
-                                                protocols \r
-  @param  SortedDriverBindingProtocols          The sorted protocol list. \r
-  @param  DriverBindingHandleCount              Driver Binding Handle Count. \r
-  @param  DriverBindingHandleBuffer             The buffer of driver binding \r
-                                                protocol to be modified. \r
-  @param  IsImageHandle                         Indicate whether \r
-                                                DriverBindingHandle is an image \r
-                                                handle \r
+  @param  DriverBindingHandle                   Handle of the driver binding\r
+                                                protocol.\r
+  @param  NumberOfSortedDriverBindingProtocols  Number Of sorted driver binding\r
+                                                protocols\r
+  @param  SortedDriverBindingProtocols          The sorted protocol list.\r
+  @param  DriverBindingHandleCount              Driver Binding Handle Count.\r
+  @param  DriverBindingHandleBuffer             The buffer of driver binding\r
+                                                protocol to be modified.\r
+  @param  IsImageHandle                         Indicate whether\r
+                                                DriverBindingHandle is an image\r
+                                                handle\r
 \r
   @return None.\r
 \r
@@ -235,7 +213,7 @@ CoreConnectController (
 VOID\r
 AddSortedDriverBindingProtocol (\r
   IN      EFI_HANDLE                   DriverBindingHandle,\r
-  IN OUT  UINTN                        *NumberOfSortedDriverBindingProtocols, \r
+  IN OUT  UINTN                        *NumberOfSortedDriverBindingProtocols,\r
   IN OUT  EFI_DRIVER_BINDING_PROTOCOL  **SortedDriverBindingProtocols,\r
   IN      UINTN                        DriverBindingHandleCount,\r
   IN OUT  EFI_HANDLE                   *DriverBindingHandleBuffer,\r
@@ -269,7 +247,7 @@ AddSortedDriverBindingProtocol (
       Status = CoreHandleProtocol (\r
                 DriverBindingHandleBuffer[Index],\r
                 &gEfiDriverBindingProtocolGuid,\r
-                (VOID **)&DriverBinding\r
+                (VOID **) &DriverBinding\r
                 );\r
       if (EFI_ERROR (Status) || DriverBinding == NULL) {\r
         continue;\r
@@ -282,7 +260,7 @@ AddSortedDriverBindingProtocol (
       if (DriverBinding->ImageHandle == DriverBindingHandle) {\r
         AddSortedDriverBindingProtocol (\r
           DriverBindingHandleBuffer[Index],\r
-          NumberOfSortedDriverBindingProtocols, \r
+          NumberOfSortedDriverBindingProtocols,\r
           SortedDriverBindingProtocols,\r
           DriverBindingHandleCount,\r
           DriverBindingHandleBuffer,\r
@@ -299,7 +277,7 @@ AddSortedDriverBindingProtocol (
   Status = CoreHandleProtocol(\r
              DriverBindingHandle,\r
              &gEfiDriverBindingProtocolGuid,\r
-             (VOID **)&DriverBinding\r
+             (VOID **) &DriverBinding\r
              );\r
   //\r
   // If DriverBindingHandle does not support the Driver Binding Protocol then return\r
@@ -334,34 +312,34 @@ AddSortedDriverBindingProtocol (
     }\r
   }\r
 }\r
\r
+\r
 \r
 /**\r
   Connects a controller to a driver.\r
 \r
-  @param  ControllerHandle                      Handle of the controller to be \r
-                                                connected. \r
-  @param  ContextDriverImageHandles             DriverImageHandle A pointer to an \r
-                                                ordered list of driver image \r
-                                                handles. \r
-  @param  RemainingDevicePath                   RemainingDevicePath A pointer to \r
-                                                the device path that specifies a \r
-                                                child  of the controller \r
-                                                specified by ControllerHandle. \r
-\r
-  @retval EFI_SUCCESS                           One or more drivers were \r
-                                                connected to ControllerHandle. \r
-  @retval EFI_OUT_OF_RESOURCES                  No enough system resources to \r
-                                                complete the request. \r
-  @retval EFI_NOT_FOUND                         No drivers were connected to \r
+  @param  ControllerHandle                      Handle of the controller to be\r
+                                                connected.\r
+  @param  ContextDriverImageHandles             DriverImageHandle A pointer to an\r
+                                                ordered list of driver image\r
+                                                handles.\r
+  @param  RemainingDevicePath                   RemainingDevicePath A pointer to\r
+                                                the device path that specifies a\r
+                                                child  of the controller\r
+                                                specified by ControllerHandle.\r
+\r
+  @retval EFI_SUCCESS                           One or more drivers were\r
+                                                connected to ControllerHandle.\r
+  @retval EFI_OUT_OF_RESOURCES                  No enough system resources to\r
+                                                complete the request.\r
+  @retval EFI_NOT_FOUND                         No drivers were connected to\r
                                                 ControllerHandle.\r
 \r
 **/\r
-EFI_STATUS \r
+EFI_STATUS\r
 CoreConnectSingleController (\r
   IN  EFI_HANDLE                ControllerHandle,\r
   IN  EFI_HANDLE                *ContextDriverImageHandles OPTIONAL,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL  *RemainingDevicePath       OPTIONAL     \r
+  IN  EFI_DEVICE_PATH_PROTOCOL  *RemainingDevicePath       OPTIONAL\r
   )\r
 {\r
   EFI_STATUS                                 Status;\r
@@ -394,10 +372,10 @@ CoreConnectSingleController (
   // Get list of all Driver Binding Protocol Instances\r
   //\r
   Status = CoreLocateHandleBuffer (\r
-             ByProtocol,   \r
-             &gEfiDriverBindingProtocolGuid,  \r
+             ByProtocol,\r
+             &gEfiDriverBindingProtocolGuid,\r
              NULL,\r
-             &DriverBindingHandleCount, \r
+             &DriverBindingHandleCount,\r
              &DriverBindingHandleBuffer\r
              );\r
   if (EFI_ERROR (Status) || (DriverBindingHandleCount == 0)) {\r
@@ -407,7 +385,7 @@ CoreConnectSingleController (
   //\r
   // Allocate a duplicate array for the sorted Driver Binding Protocol Instances\r
   //\r
-  SortedDriverBindingProtocols = CoreAllocateBootServicesPool (sizeof (VOID *) * DriverBindingHandleCount);\r
+  SortedDriverBindingProtocols = AllocatePool (sizeof (VOID *) * DriverBindingHandleCount);\r
   if (SortedDriverBindingProtocols == NULL) {\r
     CoreFreePool (DriverBindingHandleBuffer);\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -420,7 +398,7 @@ CoreConnectSingleController (
     for (Index = 0; ContextDriverImageHandles[Index] != NULL; Index++) {\r
       AddSortedDriverBindingProtocol (\r
         ContextDriverImageHandles[Index],\r
-        &NumberOfSortedDriverBindingProtocols, \r
+        &NumberOfSortedDriverBindingProtocols,\r
         SortedDriverBindingProtocols,\r
         DriverBindingHandleCount,\r
         DriverBindingHandleBuffer,\r
@@ -433,9 +411,9 @@ CoreConnectSingleController (
   // Add the Platform Driver Override Protocol drivers for ControllerHandle next\r
   //\r
   Status = CoreLocateProtocol (\r
-             &gEfiPlatformDriverOverrideProtocolGuid, \r
-             NULL, \r
-             (VOID **)&PlatformDriverOverride\r
+             &gEfiPlatformDriverOverrideProtocolGuid,\r
+             NULL,\r
+             (VOID **) &PlatformDriverOverride\r
              );\r
   if (!EFI_ERROR (Status) && (PlatformDriverOverride != NULL)) {\r
     DriverImageHandle = NULL;\r
@@ -448,7 +426,7 @@ CoreConnectSingleController (
       if (!EFI_ERROR (Status)) {\r
         AddSortedDriverBindingProtocol (\r
           DriverImageHandle,\r
-          &NumberOfSortedDriverBindingProtocols, \r
+          &NumberOfSortedDriverBindingProtocols,\r
           SortedDriverBindingProtocols,\r
           DriverBindingHandleCount,\r
           DriverBindingHandleBuffer,\r
@@ -462,9 +440,9 @@ CoreConnectSingleController (
   // Get the Bus Specific Driver Override Protocol instance on the Controller Handle\r
   //\r
   Status = CoreHandleProtocol (\r
-             ControllerHandle,  \r
-             &gEfiBusSpecificDriverOverrideProtocolGuid, \r
-             (VOID **)&BusSpecificDriverOverride\r
+             ControllerHandle,\r
+             &gEfiBusSpecificDriverOverrideProtocolGuid,\r
+             (VOID **) &BusSpecificDriverOverride\r
              );\r
   if (!EFI_ERROR (Status) && (BusSpecificDriverOverride != NULL)) {\r
     DriverImageHandle = NULL;\r
@@ -476,7 +454,7 @@ CoreConnectSingleController (
       if (!EFI_ERROR (Status)) {\r
         AddSortedDriverBindingProtocol (\r
           DriverImageHandle,\r
-          &NumberOfSortedDriverBindingProtocols, \r
+          &NumberOfSortedDriverBindingProtocols,\r
           SortedDriverBindingProtocols,\r
           DriverBindingHandleCount,\r
           DriverBindingHandleBuffer,\r
@@ -493,7 +471,7 @@ CoreConnectSingleController (
   for (Index = 0; Index < DriverBindingHandleCount; Index++) {\r
     AddSortedDriverBindingProtocol (\r
       DriverBindingHandleBuffer[Index],\r
-      &NumberOfSortedDriverBindingProtocols, \r
+      &NumberOfSortedDriverBindingProtocols,\r
       SortedDriverBindingProtocols,\r
       DriverBindingHandleCount,\r
       DriverBindingHandleBuffer,\r
@@ -511,10 +489,10 @@ CoreConnectSingleController (
   // EFI_NOT_READY, so it will be restarted\r
   //\r
   Status = CoreLocateHandleBuffer (\r
-             ByProtocol,   \r
-             &gEfiDriverBindingProtocolGuid,  \r
+             ByProtocol,\r
+             &gEfiDriverBindingProtocolGuid,\r
              NULL,\r
-             &NewDriverBindingHandleCount, \r
+             &NewDriverBindingHandleCount,\r
              &NewDriverBindingHandleBuffer\r
              );\r
   CoreFreePool (NewDriverBindingHandleBuffer);\r
@@ -555,7 +533,7 @@ CoreConnectSingleController (
 \r
     //\r
     // Loop through the sorted Driver Binding Protocol Instances in order, and see if\r
-    // any of the Driver Binding Protocols support the controller specified by \r
+    // any of the Driver Binding Protocols support the controller specified by\r
     // ControllerHandle.\r
     //\r
     DriverBinding = NULL;\r
@@ -563,11 +541,13 @@ CoreConnectSingleController (
     for (Index = 0; (Index < NumberOfSortedDriverBindingProtocols) && !DriverFound; Index++) {\r
       if (SortedDriverBindingProtocols[Index] != NULL) {\r
         DriverBinding = SortedDriverBindingProtocols[Index];\r
+        PERF_START (DriverBinding->DriverBindingHandle, "DB:Support:", NULL, 0);\r
         Status = DriverBinding->Supported(\r
-                                  DriverBinding, \r
+                                  DriverBinding,\r
                                   ControllerHandle,\r
                                   RemainingDevicePath\r
                                   );\r
+        PERF_END (DriverBinding->DriverBindingHandle, "DB:Support:", NULL, 0);\r
         if (!EFI_ERROR (Status)) {\r
           SortedDriverBindingProtocols[Index] = NULL;\r
           DriverFound = TRUE;\r
@@ -576,13 +556,13 @@ CoreConnectSingleController (
           // A driver was found that supports ControllerHandle, so attempt to start the driver\r
           // on ControllerHandle.\r
           //\r
-          PERF_START (DriverBinding->DriverBindingHandle, DRIVERBINDING_START_TOK, NULL, 0);\r
+          PERF_START (DriverBinding->DriverBindingHandle, "DB:Start:", NULL, 0);\r
           Status = DriverBinding->Start (\r
-                                    DriverBinding, \r
+                                    DriverBinding,\r
                                     ControllerHandle,\r
                                     RemainingDevicePath\r
                                     );\r
-          PERF_END (DriverBinding->DriverBindingHandle, DRIVERBINDING_START_TOK, NULL, 0);\r
+          PERF_END (DriverBinding->DriverBindingHandle, "DB:Start:", NULL, 0);\r
 \r
           if (!EFI_ERROR (Status)) {\r
             //\r
@@ -605,7 +585,7 @@ CoreConnectSingleController (
   //\r
   if (OneStarted) {\r
     return EFI_SUCCESS;\r
-  } \r
+  }\r
 \r
   //\r
   // If no drivers started and RemainingDevicePath is an End Device Path Node, then return EFI_SUCCESS\r
@@ -614,7 +594,7 @@ CoreConnectSingleController (
     if (IsDevicePathEnd (RemainingDevicePath)) {\r
       return EFI_SUCCESS;\r
     }\r
-  } \r
+  }\r
 \r
   //\r
   // Otherwise, no drivers were started on ControllerHandle, so return EFI_NOT_FOUND\r
@@ -627,37 +607,37 @@ CoreConnectSingleController (
 /**\r
   Disonnects a controller from a driver\r
 \r
-  @param  ControllerHandle                      ControllerHandle The handle of \r
-                                                the controller from which \r
-                                                driver(s)  are to be \r
-                                                disconnected. \r
-  @param  DriverImageHandle                     DriverImageHandle The driver to \r
-                                                disconnect from ControllerHandle. \r
-  @param  ChildHandle                           ChildHandle The handle of the \r
-                                                child to destroy. \r
-\r
-  @retval EFI_SUCCESS                           One or more drivers were \r
-                                                disconnected from the controller. \r
-  @retval EFI_SUCCESS                           On entry, no drivers are managing \r
-                                                ControllerHandle. \r
-  @retval EFI_SUCCESS                           DriverImageHandle is not NULL, \r
-                                                and on entry DriverImageHandle is \r
-                                                not managing ControllerHandle. \r
-  @retval EFI_INVALID_PARAMETER                 ControllerHandle is not a valid \r
-                                                EFI_HANDLE. \r
-  @retval EFI_INVALID_PARAMETER                 DriverImageHandle is not NULL, \r
-                                                and it is not a valid EFI_HANDLE. \r
-  @retval EFI_INVALID_PARAMETER                 ChildHandle is not NULL, and it \r
-                                                is not a valid EFI_HANDLE. \r
-  @retval EFI_OUT_OF_RESOURCES                  There are not enough resources \r
-                                                available to disconnect any \r
-                                                drivers from ControllerHandle. \r
-  @retval EFI_DEVICE_ERROR                      The controller could not be \r
-                                                disconnected because of a device \r
+  @param  ControllerHandle                      ControllerHandle The handle of\r
+                                                the controller from which\r
+                                                driver(s)  are to be\r
+                                                disconnected.\r
+  @param  DriverImageHandle                     DriverImageHandle The driver to\r
+                                                disconnect from ControllerHandle.\r
+  @param  ChildHandle                           ChildHandle The handle of the\r
+                                                child to destroy.\r
+\r
+  @retval EFI_SUCCESS                           One or more drivers were\r
+                                                disconnected from the controller.\r
+  @retval EFI_SUCCESS                           On entry, no drivers are managing\r
+                                                ControllerHandle.\r
+  @retval EFI_SUCCESS                           DriverImageHandle is not NULL,\r
+                                                and on entry DriverImageHandle is\r
+                                                not managing ControllerHandle.\r
+  @retval EFI_INVALID_PARAMETER                 ControllerHandle is not a valid\r
+                                                EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER                 DriverImageHandle is not NULL,\r
+                                                and it is not a valid EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER                 ChildHandle is not NULL, and it\r
+                                                is not a valid EFI_HANDLE.\r
+  @retval EFI_OUT_OF_RESOURCES                  There are not enough resources\r
+                                                available to disconnect any\r
+                                                drivers from ControllerHandle.\r
+  @retval EFI_DEVICE_ERROR                      The controller could not be\r
+                                                disconnected because of a device\r
                                                 error.\r
 \r
 **/\r
-EFI_STATUS \r
+EFI_STATUS\r
 EFIAPI\r
 CoreDisconnectController (\r
   IN  EFI_HANDLE  ControllerHandle,\r
@@ -708,8 +688,8 @@ CoreDisconnectController (
   // Get list of drivers that are currently managing ControllerHandle\r
   //\r
   DriverImageHandleBuffer = NULL;\r
-  DriverImageHandleCount  = 1;  \r
-  \r
+  DriverImageHandleCount  = 1;\r
+\r
   if (DriverImageHandle == NULL) {\r
     //\r
     // Look at each protocol interface for a match\r
@@ -719,8 +699,8 @@ CoreDisconnectController (
     CoreAcquireProtocolLock ();\r
     for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
       Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
-      for (ProtLink = Prot->OpenList.ForwardLink; \r
-           ProtLink != &Prot->OpenList; \r
+      for (ProtLink = Prot->OpenList.ForwardLink;\r
+           ProtLink != &Prot->OpenList;\r
            ProtLink = ProtLink->ForwardLink) {\r
         OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
         if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {\r
@@ -729,7 +709,7 @@ CoreDisconnectController (
       }\r
     }\r
     CoreReleaseProtocolLock ();\r
-    \r
+\r
     //\r
     // If there are no drivers managing this controller, then return EFI_SUCCESS\r
     //\r
@@ -738,7 +718,7 @@ CoreDisconnectController (
       goto Done;\r
     }\r
 \r
-    DriverImageHandleBuffer = CoreAllocateBootServicesPool (sizeof (EFI_HANDLE) * DriverImageHandleCount);\r
+    DriverImageHandleBuffer = AllocatePool (sizeof (EFI_HANDLE) * DriverImageHandleCount);\r
     if (DriverImageHandleBuffer == NULL) {\r
       Status = EFI_OUT_OF_RESOURCES;\r
       goto Done;\r
@@ -749,8 +729,8 @@ CoreDisconnectController (
     CoreAcquireProtocolLock ();\r
     for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
       Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
-      for (ProtLink = Prot->OpenList.ForwardLink; \r
-           ProtLink != &Prot->OpenList; \r
+      for (ProtLink = Prot->OpenList.ForwardLink;\r
+           ProtLink != &Prot->OpenList;\r
            ProtLink = ProtLink->ForwardLink) {\r
         OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
         if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {\r
@@ -782,8 +762,8 @@ CoreDisconnectController (
     // Get the Driver Binding Protocol of the driver that is managing this controller\r
     //\r
     Status = CoreHandleProtocol (\r
-               DriverImageHandle,  \r
-               &gEfiDriverBindingProtocolGuid,   \r
+               DriverImageHandle,\r
+               &gEfiDriverBindingProtocolGuid,\r
                (VOID **)&DriverBinding\r
                );\r
     if (EFI_ERROR (Status)) {\r
@@ -800,14 +780,14 @@ CoreDisconnectController (
     CoreAcquireProtocolLock ();\r
     for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
       Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
-      for (ProtLink = Prot->OpenList.ForwardLink; \r
-           ProtLink != &Prot->OpenList; \r
+      for (ProtLink = Prot->OpenList.ForwardLink;\r
+           ProtLink != &Prot->OpenList;\r
            ProtLink = ProtLink->ForwardLink) {\r
         OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
         if (OpenData->AgentHandle == DriverImageHandle) {\r
           if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
             ChildBufferCount++;\r
-          } \r
+          }\r
           if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {\r
             DriverImageHandleValid = TRUE;\r
           }\r
@@ -820,7 +800,7 @@ CoreDisconnectController (
       ChildHandleValid = FALSE;\r
       ChildBuffer = NULL;\r
       if (ChildBufferCount != 0) {\r
-        ChildBuffer = CoreAllocateBootServicesPool (sizeof (EFI_HANDLE) * ChildBufferCount);\r
+        ChildBuffer = AllocatePool (sizeof (EFI_HANDLE) * ChildBufferCount);\r
         if (ChildBuffer == NULL) {\r
           Status = EFI_OUT_OF_RESOURCES;\r
           goto Done;\r
@@ -831,8 +811,8 @@ CoreDisconnectController (
         CoreAcquireProtocolLock ();\r
         for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
           Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
-          for (ProtLink = Prot->OpenList.ForwardLink; \r
-               ProtLink != &Prot->OpenList; \r
+          for (ProtLink = Prot->OpenList.ForwardLink;\r
+               ProtLink != &Prot->OpenList;\r
                ProtLink = ProtLink->ForwardLink) {\r
             OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
             if ((OpenData->AgentHandle == DriverImageHandle) &&\r
@@ -888,8 +868,8 @@ CoreDisconnectController (
   } else {\r
     Status = EFI_NOT_FOUND;\r
   }\r
-  \r
-Done:  \r
+\r
+Done:\r
 \r
   if (DriverImageHandleBuffer != NULL) {\r
     CoreFreePool (DriverImageHandleBuffer);\r