]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg PiSmmCpuDxeSmm: Use new EfiLocateFirstAcpiTable()
authorStar Zeng <star.zeng@intel.com>
Fri, 8 Jun 2018 08:41:07 +0000 (16:41 +0800)
committerStar Zeng <star.zeng@intel.com>
Thu, 27 Sep 2018 06:25:36 +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 PiSmmCpuDxeSmm 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: Eric Dong <eric.dong@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h

index 95a451122522940e1cdaf80025ac7480f9e3b0b8..666f851fafbde8d137e553a483d8ad1ec9280bd0 100644 (file)
@@ -4,7 +4,7 @@
 # This SMM driver performs SMM initialization, deploy SMM Entry Vector,\r
 # provides CPU specific services in SMM.\r
 #\r
-# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
 #\r
 # This program and the accompanying materials\r
 \r
 [Guids]\r
   gEfiAcpiVariableGuid                     ## SOMETIMES_CONSUMES ## HOB # it is used for S3 boot.\r
-  gEfiAcpi20TableGuid                      ## SOMETIMES_CONSUMES ## SystemTable\r
-  gEfiAcpi10TableGuid                      ## SOMETIMES_CONSUMES ## SystemTable\r
   gEdkiiPiSmmMemoryAttributesTableGuid     ## CONSUMES ## SystemTable\r
   gEfiMemoryAttributesTableGuid            ## CONSUMES ## SystemTable\r
 \r
index a743cf64f90715a51358da2209abd97cce1b2039..91b8e7ddb991d1948e66d903cfe21aea7896637f 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Enable SMM profile.\r
 \r
-Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR>\r
 Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
 \r
 This program and the accompanying materials\r
@@ -725,84 +725,6 @@ InitPaging (
   return ;\r
 }\r
 \r
-/**\r
-  To find FADT in ACPI tables.\r
-\r
-  @param AcpiTableGuid   The GUID used to find ACPI table in UEFI ConfigurationTable.\r
-\r
-  @return  FADT table pointer.\r
-**/\r
-EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE  *\r
-FindAcpiFadtTableByAcpiGuid (\r
-  IN EFI_GUID  *AcpiTableGuid\r
-  )\r
-{\r
-  EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER  *Rsdp;\r
-  EFI_ACPI_DESCRIPTION_HEADER                   *Rsdt;\r
-  EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE     *Fadt;\r
-  UINTN                                         Index;\r
-  UINT32                                        Data32;\r
-  Rsdp  = NULL;\r
-  Rsdt  = NULL;\r
-  Fadt  = NULL;\r
-  //\r
-  // found ACPI table RSD_PTR from system table\r
-  //\r
-  for (Index = 0; Index < gST->NumberOfTableEntries; Index++) {\r
-    if (CompareGuid (&(gST->ConfigurationTable[Index].VendorGuid), AcpiTableGuid)) {\r
-      //\r
-      // A match was found.\r
-      //\r
-      Rsdp = gST->ConfigurationTable[Index].VendorTable;\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (Rsdp == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  Rsdt = (EFI_ACPI_DESCRIPTION_HEADER *)(UINTN) Rsdp->RsdtAddress;\r
-  if (Rsdt == NULL || Rsdt->Signature != EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {\r
-    return NULL;\r
-  }\r
-\r
-  for (Index = sizeof (EFI_ACPI_DESCRIPTION_HEADER); Index < Rsdt->Length; Index = Index + sizeof (UINT32)) {\r
-\r
-    Data32  = *(UINT32 *) ((UINT8 *) Rsdt + Index);\r
-    Fadt    = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *) (UINT32 *) (UINTN) Data32;\r
-    if (Fadt->Header.Signature == EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (Fadt == NULL || Fadt->Header.Signature != EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) {\r
-    return NULL;\r
-  }\r
-\r
-  return Fadt;\r
-}\r
-\r
-/**\r
-  To find FADT in ACPI tables.\r
-\r
-  @return  FADT table pointer.\r
-**/\r
-EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE  *\r
-FindAcpiFadtTable (\r
-  VOID\r
-  )\r
-{\r
-  EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt;\r
-\r
-  Fadt = FindAcpiFadtTableByAcpiGuid (&gEfiAcpi20TableGuid);\r
-  if (Fadt != NULL) {\r
-    return Fadt;\r
-  }\r
-\r
-  return FindAcpiFadtTableByAcpiGuid (&gEfiAcpi10TableGuid);\r
-}\r
-\r
 /**\r
   To get system port address of the SMI Command Port in FADT table.\r
 \r
@@ -814,7 +736,9 @@ GetSmiCommandPort (
 {\r
   EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt;\r
 \r
-  Fadt = FindAcpiFadtTable ();\r
+  Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *) EfiLocateFirstAcpiTable (\r
+                                                         EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE\r
+                                                         );\r
   ASSERT (Fadt != NULL);\r
 \r
   mSmiCommandPort = Fadt->SmiCmd;\r
index 18a7fe3b0784902d4a8c641a3389b696de3fe02d..ee0307e263251dc0b90790caaee0ed416e6dcba6 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 SMM profile internal header file.\r
 \r
-Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2012 - 2018, 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
@@ -15,7 +15,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _SMM_PROFILE_INTERNAL_H_\r
 #define _SMM_PROFILE_INTERNAL_H_\r
 \r
-#include <Guid/Acpi.h>\r
 #include <Protocol/SmmReadyToLock.h>\r
 #include <Library/UefiRuntimeServicesTableLib.h>\r
 #include <Library/DxeServicesTableLib.h>\r