]> git.proxmox.com Git - mirror_edk2.git/commitdiff
EdkCompatibilityPkg: Fix GCC error to avoid the duplicated global variables
authorLiming Gao <liming.gao@intel.com>
Fri, 18 Dec 2015 02:28:18 +0000 (02:28 +0000)
committerlgao4 <lgao4@Edk2>
Fri, 18 Dec 2015 02:28:18 +0000 (02:28 +0000)
SmmBaseHelper uses the same name global variables to the one in
SmmMemoryAllocateLib. Update SmmBaseHelper to use SmmMemLib
SmmIsBufferOutsideSmmValid().

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19337 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c
EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf
EdkCompatibilityPkg/EdkCompatibilityPkg.dsc

index 1d1644923da1e994923d7821f7c7c30766f27969..16566d2b2948ffa9404762b2fd815de4bb213e0e 100644 (file)
@@ -34,6 +34,7 @@
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/SynchronizationLib.h>\r
 #include <Library/CpuLib.h>\r
+#include <Library/SmmMemLib.h>\r
 #include <Guid/SmmBaseThunkCommunication.h>\r
 #include <Protocol/SmmBaseHelperReady.h>\r
 #include <Protocol/SmmCpu.h>\r
@@ -42,7 +43,6 @@
 #include <Protocol/MpService.h>\r
 #include <Protocol/LoadPe32Image.h>\r
 #include <Protocol/SmmReadyToLock.h>\r
-#include <Protocol/SmmAccess2.h>\r
 \r
 /**\r
   Register SMM image to SMRAM profile.\r
@@ -122,8 +122,6 @@ SPIN_LOCK                          mPFLock;
 UINT64                             mPhyMask;\r
 VOID                               *mOriginalHandler;\r
 EFI_SMM_CPU_SAVE_STATE             *mShadowSaveState;\r
-EFI_SMRAM_DESCRIPTOR               *mSmramRanges;\r
-UINTN                              mSmramRangeCount;\r
 \r
 LIST_ENTRY mCallbackInfoListHead = INITIALIZE_LIST_HEAD_VARIABLE (mCallbackInfoListHead);\r
 \r
@@ -743,60 +741,6 @@ LoadImage (
   return Status;\r
 }\r
 \r
-/**\r
-  This function check if the address is in SMRAM.\r
-\r
-  @param Buffer  the buffer address to be checked.\r
-  @param Length  the buffer length to be checked.\r
-\r
-  @retval TRUE  this address is in SMRAM.\r
-  @retval FALSE this address is NOT in SMRAM.\r
-**/\r
-BOOLEAN\r
-IsAddressInSmram (\r
-  IN EFI_PHYSICAL_ADDRESS  Buffer,\r
-  IN UINT64                Length\r
-  )\r
-{\r
-  UINTN  Index;\r
-\r
-  for (Index = 0; Index < mSmramRangeCount; Index ++) {\r
-    if (((Buffer >= mSmramRanges[Index].CpuStart) && (Buffer < mSmramRanges[Index].CpuStart + mSmramRanges[Index].PhysicalSize)) ||\r
-        ((mSmramRanges[Index].CpuStart >= Buffer) && (mSmramRanges[Index].CpuStart < Buffer + Length))) {\r
-      return TRUE;\r
-    }\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-/**\r
-  This function check if the address refered by Buffer and Length is valid.\r
-\r
-  @param Buffer  the buffer address to be checked.\r
-  @param Length  the buffer length to be checked.\r
-\r
-  @retval TRUE  this address is valid.\r
-  @retval FALSE this address is NOT valid.\r
-**/\r
-BOOLEAN\r
-IsAddressValid (\r
-  IN UINTN                 Buffer,\r
-  IN UINTN                 Length\r
-  )\r
-{\r
-  if (Buffer > (MAX_ADDRESS - Length)) {\r
-    //\r
-    // Overflow happen\r
-    //\r
-    return FALSE;\r
-  }\r
-  if (IsAddressInSmram ((EFI_PHYSICAL_ADDRESS)Buffer, (UINT64)Length)) {\r
-    return FALSE;\r
-  }\r
-  return TRUE;\r
-}\r
-\r
 /** \r
   Thunk service of EFI_SMM_BASE_PROTOCOL.Register().\r
 \r
@@ -1133,7 +1077,7 @@ SmmHandlerEntry (
   ASSERT (CommBufferSize != NULL);\r
 \r
   if (*CommBufferSize == sizeof (SMMBASE_FUNCTION_DATA) &&\r
-      IsAddressValid ((UINTN)CommBuffer, *CommBufferSize)) {\r
+      SmmIsBufferOutsideSmmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)CommBuffer, (UINT64)*CommBufferSize)) {\r
     FunctionData = (SMMBASE_FUNCTION_DATA *)CommBuffer;\r
 \r
     switch (FunctionData->Function) {\r
@@ -1207,8 +1151,6 @@ SmmBaseHelperMain (
   EFI_HANDLE                 Handle;\r
   UINTN                      NumberOfEnabledProcessors;\r
   VOID                       *Registration;\r
-  EFI_SMM_ACCESS2_PROTOCOL   *SmmAccess;\r
-  UINTN                      Size;\r
   \r
   Handle = NULL;\r
   ///\r
@@ -1253,28 +1195,6 @@ SmmBaseHelperMain (
   mSmmBaseHelperReady->FrameworkSmst = mFrameworkSmst;\r
   mSmmBaseHelperReady->ServiceEntry = SmmHandlerEntry;\r
 \r
-  //\r
-  // Get SMRAM information\r
-  //\r
-  Status = gBS->LocateProtocol (&gEfiSmmAccess2ProtocolGuid, NULL, (VOID **)&SmmAccess);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  Size = 0;\r
-  Status = SmmAccess->GetCapabilities (SmmAccess, &Size, NULL);\r
-  ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
-\r
-  Status = gSmst->SmmAllocatePool (\r
-                    EfiRuntimeServicesData,\r
-                    Size,\r
-                    (VOID **)&mSmramRanges\r
-                    );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  Status = SmmAccess->GetCapabilities (SmmAccess, &Size, mSmramRanges);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  mSmramRangeCount = Size / sizeof (EFI_SMRAM_DESCRIPTOR);\r
-\r
   //\r
   // Register SMM Ready To Lock Protocol notification\r
   //\r
index 8e967dc2cb38b2f71118fc5cfaa41837b56f5e33..118640b1e4a09b1a3edecf7425eb21d1d98f5606 100644 (file)
@@ -60,6 +60,7 @@
   SynchronizationLib\r
   CpuLib\r
   PcdLib\r
+  SmmMemLib\r
 \r
 [Guids]\r
   gEfiSmmBaseThunkCommunicationGuid\r
@@ -75,7 +76,6 @@
   gEfiSmmCpuIo2ProtocolGuid              # PROTOCOL ALWAYS_CONSUMED\r
   gEfiLoadPeImageProtocolGuid            # PROTOCOL ALWAYS_CONSUMED\r
   gEfiSmmReadyToLockProtocolGuid         # PROTOCOL ALWAYS_CONSUMED\r
-  gEfiSmmAccess2ProtocolGuid             # PROTOCOL ALWAYS_CONSUMED\r
   gEfiSmmCommunicationProtocolGuid\r
 \r
 [Pcd]\r
index 016e9adeedf395bae18a9ed89a22ad3bcbeaebb1..eca611de07e4ec542a3fdf2d91fe667a0392a8ab 100644 (file)
@@ -72,6 +72,7 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf\r
   DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf\r
   LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf\r
+  SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf\r
 \r
 [LibraryClasses.common.PEIM]\r
   MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf\r
@@ -84,6 +85,7 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf\r
   ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf\r
   MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf\r
+  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf\r
 \r
 [BuildOptions.Common.EDK]\r
   GCC:*_*_IA32_CC_FLAGS     = -DEFI32 $(GCC_MACRO)\r