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....@intel.com>
---
 .../Compatibility/SmmBaseHelper/SmmBaseHelper.c    | 84 +---------------------
 .../Compatibility/SmmBaseHelper/SmmBaseHelper.inf  |  2 +-
 EdkCompatibilityPkg/EdkCompatibilityPkg.dsc        |  2 +
 3 files changed, 5 insertions(+), 83 deletions(-)

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

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to