Revision: 19354
          http://sourceforge.net/p/edk2/code/19354
Author:   vanjeff
Date:     2015-12-18 05:44:39 +0000 (Fri, 18 Dec 2015)
Log Message:
-----------
EdkCompatibilityPkg: Fix GCC error to avoid the duplicated global variables

SmmBaseHelper uses the same name global variables to the one in
SmmMemoryAllocateLib. Update SmmBaseHelper to use SmmMemLib
SmmIsBufferOutsideSmmValid().

(Sync patch r19337 from main trunk.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <[email protected]>

Revision Links:
--------------
    http://sourceforge.net/p/edk2/code/19337

Modified Paths:
--------------
    
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c
    
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf
    branches/UDK2015/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc

Modified: 
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c
===================================================================
--- 
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c
    2015-12-18 05:43:54 UTC (rev 19353)
+++ 
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c
    2015-12-18 05:44:39 UTC (rev 19354)
@@ -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 @@
 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 @@
   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 @@
   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 @@
   EFI_HANDLE                 Handle;
   UINTN                      NumberOfEnabledProcessors;
   VOID                       *Registration;
-  EFI_SMM_ACCESS2_PROTOCOL   *SmmAccess;
-  UINTN                      Size;
   
   Handle = NULL;
   ///
@@ -1254,28 +1196,6 @@
   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 (

Modified: 
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf
===================================================================
--- 
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf
  2015-12-18 05:43:54 UTC (rev 19353)
+++ 
branches/UDK2015/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf
  2015-12-18 05:44:39 UTC (rev 19354)
@@ -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]

Modified: branches/UDK2015/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc
===================================================================
--- branches/UDK2015/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc        
2015-12-18 05:43:54 UTC (rev 19353)
+++ branches/UDK2015/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc        
2015-12-18 05:44:39 UTC (rev 19354)
@@ -72,6 +72,7 @@
   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 @@
   
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)


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to