]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg/dh: Modify the dump of BusSpecificDriverOverride protocol
authorHuajing Li <huajing.li@intel.com>
Thu, 21 Sep 2017 07:16:38 +0000 (15:16 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Mon, 25 Sep 2017 00:32:17 +0000 (08:32 +0800)
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Huajing Li <huajing.li@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.uni

index b9eb564dd0d39f85b3c530ead3293f300f3c2169..ce2b49b5a24515088f84b84484a667926f9df738 100644 (file)
@@ -937,6 +937,85 @@ LoadedImageDevicePathProtocolDumpInformation(
   return DevicePathProtocolDumpInformationEx (TheHandle, Verbose, &gEfiLoadedImageDevicePathProtocolGuid);\r
 }\r
 \r
+/**\r
+  Function to dump information about BusSpecificDriverOverride protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has the protocol installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+BusSpecificDriverOverrideProtocolDumpInformation (\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_STATUS                                Status;\r
+  CHAR16                                    *GetString;\r
+  CHAR16                                    *RetVal;\r
+  CHAR16                                    *TempRetVal;\r
+  EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *BusSpecificDriverOverride;\r
+  EFI_LOADED_IMAGE_PROTOCOL                 *LoadedImage;\r
+  EFI_HANDLE                                ImageHandle;\r
+  UINTN                                     Size;\r
+\r
+  if (!Verbose) {\r
+    return NULL;\r
+  }\r
+  Size        = 0;\r
+  GetString   = NULL;\r
+  RetVal      = NULL;\r
+  TempRetVal  = NULL;\r
+  ImageHandle = 0;\r
+\r
+  Status = gBS->OpenProtocol (\r
+                  TheHandle,\r
+                  &gEfiBusSpecificDriverOverrideProtocolGuid,\r
+                  (VOID**)&BusSpecificDriverOverride,\r
+                  gImageHandle,\r
+                  NULL,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return NULL;\r
+  }\r
+  HandleParsingHiiInit ();\r
+  GetString = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_BSDO_DUMP_MAIN), NULL);\r
+  if (GetString == NULL) {\r
+    return NULL;\r
+  }\r
+  do {\r
+    Status = BusSpecificDriverOverride->GetDriver (\r
+                                          BusSpecificDriverOverride,\r
+                                          &ImageHandle\r
+                                          );\r
+    if (!EFI_ERROR (Status)) {\r
+      Status = gBS->HandleProtocol (\r
+                      ImageHandle,\r
+                      &gEfiLoadedImageProtocolGuid,\r
+                      (VOID **) &LoadedImage\r
+                      );\r
+      if(!EFI_ERROR (Status)) {\r
+        TempRetVal = CatSPrint (\r
+                       TempRetVal,\r
+                       GetString,\r
+                       ConvertHandleToHandleIndex (ImageHandle),\r
+                       ConvertDevicePathToText (LoadedImage->FilePath, TRUE, TRUE)\r
+                       );\r
+        StrnCatGrow (&RetVal, &Size, TempRetVal, 0);\r
+        SHELL_FREE_NON_NULL (TempRetVal);\r
+      }\r
+    }\r
+  } while (!EFI_ERROR (Status));\r
+\r
+  SHELL_FREE_NON_NULL (GetString);\r
+  return RetVal;\r
+}\r
+\r
 /**\r
   Function to dump information about EfiAdapterInformation Protocol.\r
 \r
@@ -1623,7 +1702,7 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_DEVICE_PATH_VTUTF8),    &gEfiVTUTF8Guid,                                  NULL},\r
   {STRING_TOKEN(STR_DRIVER_BINDING),        &gEfiDriverBindingProtocolGuid,                   NULL},\r
   {STRING_TOKEN(STR_PLATFORM_OVERRIDE),     &gEfiPlatformDriverOverrideProtocolGuid,          NULL},\r
-  {STRING_TOKEN(STR_BUS_OVERRIDE),          &gEfiBusSpecificDriverOverrideProtocolGuid,       NULL},\r
+  {STRING_TOKEN(STR_BUS_OVERRIDE),          &gEfiBusSpecificDriverOverrideProtocolGuid,       BusSpecificDriverOverrideProtocolDumpInformation},\r
   {STRING_TOKEN(STR_DRIVER_DIAG),           &gEfiDriverDiagnosticsProtocolGuid,               NULL},\r
   {STRING_TOKEN(STR_DRIVER_DIAG2),          &gEfiDriverDiagnostics2ProtocolGuid,              NULL},\r
   {STRING_TOKEN(STR_DRIVER_CN),             &gEfiComponentNameProtocolGuid,                   NULL},\r
index 8541399b687c728bae2f3beb133ba92967e671b2..3f9fc9cbac5b5a9aa42558b37a8e9a476be341ec 100644 (file)
 #string STR_GOP_RES_LIST_ENTRY    #language en-US "       Resolution[%%H%d%%N]:\r\n"\r
                                                   "         Res Hor.........: %%H0x%08x%%N\r\n"\r
                                                   "         Res Ver.........: %%H0x%08x%%N\r\n"\r
-\r
+#string STR_BSDO_DUMP_MAIN        #language en-US "     Drv[%02x] File:%%H%s%%N"\r
 #string STR_EDID_DISCOVERED_MAIN  #language en-US "     EDID Discovered Size : %%H0x%08x%%N\r\n"\r
 #string STR_EDID_DISCOVERED_DATA  #language en-US "     EDID Discovered Data :\r\n"\r
 #string STR_EDID_ACTIVE_MAIN      #language en-US "     EDID Active Size : %%H0x%08x%%N\r\n"\r