]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/LoadPciRom.c
ShellPkg/[hex]edit: use SimpleTextInEx to read console
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / LoadPciRom.c
index 0efd71b600acb2448746ff5c597eb269eb885cbb..7be658dc879e7a74d82d1d0a643a9eb9fe5c4ecc 100644 (file)
@@ -1,8 +1,8 @@
 /** @file\r
   Main file for LoadPciRom shell Debug1 function.\r
 \r
-  Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>\r
-  Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2005 - 2016, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -26,7 +26,6 @@
   @retval EFI_ABORTED     The abort mechanism was received.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 LoadPciRomConnectAllDriversToAllControllers (\r
   VOID\r
   );\r
@@ -45,7 +44,6 @@ LoadPciRomConnectAllDriversToAllControllers (
   @retval Other value             Unknown error.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 LoadEfiDriversFromRomImage (\r
   VOID                      *RomBar,\r
   UINTN                     RomSize,\r
@@ -147,7 +145,11 @@ ShellCommandRunLoadPciRom (
           }\r
           SourceSize  = (UINTN) Node->Info->FileSize;\r
           File1Buffer = AllocateZeroPool (SourceSize);\r
-          ASSERT(File1Buffer != NULL);\r
+          if (File1Buffer == NULL) {\r
+            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"loadpcirom");\r
+            ShellStatus = SHELL_OUT_OF_RESOURCES;\r
+            continue;\r
+          }\r
           Status = gEfiShellProtocol->ReadFile(Node->Handle, &SourceSize, File1Buffer);\r
           if (EFI_ERROR(Status)) {\r
             ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_READ_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);  \r
@@ -195,7 +197,6 @@ ShellCommandRunLoadPciRom (
   @retval Other value             Unknown error.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 LoadEfiDriversFromRomImage (\r
   VOID                      *RomBar,\r
   UINTN                     RomSize,\r
@@ -373,98 +374,36 @@ LoadEfiDriversFromRomImage (
   @retval EFI_ABORTED     The abort mechanism was received.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 LoadPciRomConnectAllDriversToAllControllers (\r
   VOID\r
   )\r
-\r
 {\r
   EFI_STATUS  Status;\r
-  UINTN       AllHandleCount;\r
-  EFI_HANDLE  *AllHandleBuffer;\r
-  UINTN       Index;\r
   UINTN       HandleCount;\r
   EFI_HANDLE  *HandleBuffer;\r
-  UINTN       *HandleType;\r
-  UINTN       HandleIndex;\r
-  BOOLEAN     Parent;\r
-  BOOLEAN     Device;\r
-\r
-  Status = gBS->LocateHandleBuffer(\r
-            AllHandles,\r
-            NULL,\r
-            NULL,\r
-            &AllHandleCount,\r
-            &AllHandleBuffer\r
-           );\r
+  UINTN       Index;\r
+\r
+  Status = gBS->LocateHandleBuffer (\r
+                  AllHandles,\r
+                  NULL,\r
+                  NULL,\r
+                  &HandleCount,\r
+                  &HandleBuffer\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
 \r
-  for (Index = 0; Index < AllHandleCount; Index++) {\r
+  for (Index = 0; Index < HandleCount; Index++) {\r
     if (ShellGetExecutionBreakFlag ()) {\r
       Status = EFI_ABORTED;\r
-      goto Done;\r
-    }\r
-    //\r
-    // Scan the handle database\r
-    //\r
-    Status = ParseHandleDatabaseByRelationshipWithType(\r
-      NULL,\r
-      AllHandleBuffer[Index],\r
-      &HandleCount,\r
-      &HandleBuffer,\r
-      &HandleType\r
-     );\r
-/*\r
-    Status = LibScanHandleDatabase (\r
-              NULL,\r
-              NULL,\r
-              AllHandleBuffer[Index],\r
-              NULL,\r
-              &HandleCount,\r
-              &HandleBuffer,\r
-              &HandleType\r
-             );\r
-*/\r
-    if (EFI_ERROR (Status)) {\r
-      goto Done;\r
-    }\r
-\r
-    Device = TRUE;\r
-    if ((HandleType[Index] & HR_DRIVER_BINDING_HANDLE) != 0) {\r
-      Device = FALSE;\r
-    }\r
-\r
-    if ((HandleType[Index] & HR_IMAGE_HANDLE) != 0) {\r
-      Device = FALSE;\r
-    }\r
-\r
-    if (Device) {\r
-      Parent = FALSE;\r
-      for (HandleIndex = 0; HandleIndex < HandleCount; HandleIndex++) {\r
-        if ((HandleType[HandleIndex] & HR_PARENT_HANDLE) != 0) {\r
-          Parent = TRUE;\r
-        }\r
-      }\r
-\r
-      if (!Parent) {\r
-        if ((HandleType[Index] & HR_DEVICE_HANDLE) != 0) {\r
-          Status = gBS->ConnectController (\r
-                        AllHandleBuffer[Index],\r
-                        NULL,\r
-                        NULL,\r
-                        TRUE\r
-                       );\r
-        }\r
-      }\r
+      break;\r
     }\r
+    gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE);\r
+  }\r
 \r
+  if (HandleBuffer != NULL) {\r
     FreePool (HandleBuffer);\r
-    FreePool (HandleType);\r
   }\r
-\r
-Done:\r
-  FreePool (AllHandleBuffer);\r
   return Status;\r
 }\r