]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg DpDynamicCommand: Use new EfiLocateFirstAcpiTable()
authorStar Zeng <star.zeng@intel.com>
Fri, 8 Jun 2018 08:40:40 +0000 (16:40 +0800)
committerStar Zeng <star.zeng@intel.com>
Thu, 27 Sep 2018 06:25:35 +0000 (14:25 +0800)
https://bugzilla.tianocore.org/show_bug.cgi?id=967
Request to add a library function for GetAcpiTable() in order
to get ACPI table using signature as input.

After evaluation, we found there are many duplicated code to
find ACPI table by signature in different modules.

This patch updates DpDynamicCommand to use new
EfiLocateFirstAcpiTable() and remove the duplicated code.

Cc: Younas khan <pmdyounaskhan786@gmail.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
ShellPkg/DynamicCommand/DpDynamicCommand/Dp.h
ShellPkg/DynamicCommand/DpDynamicCommand/Dp.uni
ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf

index 2c094b63c94abed2438ade6675ab8317f2bbe9d2..c14931055cbf4a90e8809a7f547708378c2098a6 100644 (file)
@@ -117,116 +117,6 @@ DumpStatistics( void )
   SHELL_FREE_NON_NULL (StringPtrUnknown);\r
 }\r
 \r
-/**\r
-  This function scan ACPI table in RSDT.\r
-\r
-  @param  Rsdt        ACPI RSDT\r
-  @param  Signature   ACPI table signature\r
-\r
-  @return ACPI table\r
-**/\r
-VOID *\r
-ScanTableInRSDT (\r
-  IN RSDT_TABLE                   *Rsdt,\r
-  IN UINT32                       Signature\r
-  )\r
-{\r
-  UINTN                         Index;\r
-  UINT32                        EntryCount;\r
-  UINT32                        *EntryPtr;\r
-  EFI_ACPI_DESCRIPTION_HEADER   *Table;\r
-\r
-  EntryCount = (Rsdt->Header.Length - sizeof (EFI_ACPI_DESCRIPTION_HEADER)) / sizeof(UINT32);\r
-\r
-  EntryPtr = &Rsdt->Entry;\r
-  for (Index = 0; Index < EntryCount; Index ++, EntryPtr ++) {\r
-    Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(*EntryPtr));\r
-    if (Table->Signature == Signature) {\r
-      return Table;\r
-    }\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
-/**\r
-  This function scan ACPI table in XSDT.\r
-\r
-  @param  Xsdt       ACPI XSDT\r
-  @param  Signature  ACPI table signature\r
-\r
-  @return ACPI table\r
-**/\r
-VOID *\r
-ScanTableInXSDT (\r
-  IN XSDT_TABLE                   *Xsdt,\r
-  IN UINT32                       Signature\r
-  )\r
-{\r
-  UINTN                        Index;\r
-  UINT32                       EntryCount;\r
-  UINT64                       EntryPtr;\r
-  UINTN                        BasePtr;\r
-  EFI_ACPI_DESCRIPTION_HEADER  *Table;\r
-\r
-  EntryCount = (Xsdt->Header.Length - sizeof (EFI_ACPI_DESCRIPTION_HEADER)) / sizeof(UINT64);\r
-\r
-  BasePtr = (UINTN)(&(Xsdt->Entry));\r
-  for (Index = 0; Index < EntryCount; Index ++) {\r
-    CopyMem (&EntryPtr, (VOID *)(BasePtr + Index * sizeof(UINT64)), sizeof(UINT64));\r
-    Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(EntryPtr));\r
-    if (Table->Signature == Signature) {\r
-      return Table;\r
-    }\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
-/**\r
-  This function scan ACPI table in RSDP.\r
-\r
-  @param  Rsdp       ACPI RSDP\r
-  @param  Signature  ACPI table signature\r
-\r
-  @return ACPI table\r
-**/\r
-VOID *\r
-FindAcpiPtr (\r
-  IN EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp,\r
-  IN UINT32                                       Signature\r
-  )\r
-{\r
-  EFI_ACPI_DESCRIPTION_HEADER                    *AcpiTable;\r
-  RSDT_TABLE                                     *Rsdt;\r
-  XSDT_TABLE                                     *Xsdt;\r
-\r
-  AcpiTable = NULL;\r
-\r
-  //\r
-  // Check ACPI2.0 table\r
-  //\r
-  Rsdt = (RSDT_TABLE *)(UINTN)Rsdp->RsdtAddress;\r
-  Xsdt = NULL;\r
-  if ((Rsdp->Revision >= 2) && (Rsdp->XsdtAddress < (UINT64)(UINTN)-1)) {\r
-    Xsdt = (XSDT_TABLE *)(UINTN)Rsdp->XsdtAddress;\r
-  }\r
-  //\r
-  // Check Xsdt\r
-  //\r
-  if (Xsdt != NULL) {\r
-    AcpiTable = ScanTableInXSDT (Xsdt, Signature);\r
-  }\r
-  //\r
-  // Check Rsdt\r
-  //\r
-  if ((AcpiTable == NULL) && (Rsdt != NULL)) {\r
-    AcpiTable = ScanTableInRSDT (Rsdt, Signature);\r
-  }\r
-\r
-  return AcpiTable;\r
-}\r
-\r
 /**\r
   Get Boot performance table form Acpi table.\r
 \r
@@ -235,31 +125,11 @@ EFI_STATUS
 GetBootPerformanceTable (\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  VOID                        *AcpiTable;\r
   FIRMWARE_PERFORMANCE_TABLE  *FirmwarePerformanceTable;\r
 \r
-  AcpiTable = NULL;\r
-\r
-  Status = EfiGetSystemConfigurationTable (\r
-             &gEfiAcpi20TableGuid,\r
-             &AcpiTable\r
-             );\r
-  if (EFI_ERROR (Status)) {\r
-    Status = EfiGetSystemConfigurationTable (\r
-               &gEfiAcpi10TableGuid,\r
-               &AcpiTable\r
-                 );\r
-  }\r
-  if (EFI_ERROR(Status) || AcpiTable == NULL) {\r
-    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DP_GET_ACPI_TABLE_FAIL), mDpHiiHandle);\r
-    return Status;\r
-  }\r
-\r
-  FirmwarePerformanceTable = FindAcpiPtr (\r
-                      (EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)AcpiTable,\r
-                      EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE\r
-                      );\r
+  FirmwarePerformanceTable = (FIRMWARE_PERFORMANCE_TABLE *) EfiLocateFirstAcpiTable (\r
+                                                              EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE\r
+                                                              );\r
   if (FirmwarePerformanceTable == NULL) {\r
     ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DP_GET_ACPI_FPDT_FAIL), mDpHiiHandle);\r
     return EFI_NOT_FOUND;\r
index 0e6e9422effc00a747c92ae6926c6aedfebd41ff..db8472f6558f756becda8ca95da41fa3e711d535 100644 (file)
@@ -21,7 +21,6 @@
 #include <Guid/Performance.h>\r
 #include <Guid/ExtendedFirmwarePerformance.h>\r
 #include <Guid/FirmwarePerformance.h>\r
-#include <Guid/Acpi.h>\r
 \r
 #include <Protocol/HiiPackageList.h>\r
 #include <Protocol/DevicePath.h>\r
index 1d6f25b8c252153173f55af1f07490754101a823..7fc2b8d1c966eb46d4f2f9c515027874fae0a989 100644 (file)
@@ -94,7 +94,6 @@
 #string STR_DP_INCOMPLETE              #language en-US  " I "\r
 #string STR_DP_COMPLETE                #language en-US  "   "\r
 #string STR_ALIT_UNKNOWN               #language en-US  "Unknown"\r
-#string STR_DP_GET_ACPI_TABLE_FAIL     #language en-US  "Fail to get ACPI Table\n"\r
 #string STR_DP_GET_ACPI_FPDT_FAIL      #language en-US  "Fail to get Firmware Performance Data Table (FPDT) in ACPI Table\n"\r
 \r
 #string STR_GET_HELP_DP         #language en-US ""\r
index cedb333b285c380aef8d1a51648f2e3713e20d7a..3a35fca310b07552153227b1965c1de8368de8a6 100644 (file)
@@ -59,8 +59,6 @@
 \r
 [Guids]\r
   gPerformanceProtocolGuid                                ## CONSUMES ## SystemTable\r
-  gEfiAcpi20TableGuid                                     ## CONSUMES ## SystemTable\r
-  gEfiAcpi10TableGuid                                     ## CONSUMES ## SystemTable\r
 \r
 [Protocols]\r
   gEfiLoadedImageProtocolGuid                             ## CONSUMES\r
index 8fd3bbd5df83e9d8792cfea13a531a554763d5b2..62a3b5246500f991e203f94f8091e60331d2839b 100644 (file)
@@ -60,8 +60,6 @@
 \r
 [Guids]\r
   gPerformanceProtocolGuid                                ## CONSUMES ## SystemTable\r
-  gEfiAcpi20TableGuid                                     ## CONSUMES\r
-  gEfiAcpi10TableGuid                                     ## CONSUMES\r
 \r
 [Protocols]\r
   gEfiLoadedImageProtocolGuid                             ## CONSUMES\r