]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c
EdkCompatibilityPkg: Fix some typos of "according"
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / SmmBaseHelper / SmmBaseHelper.c
index 1d1644923da1e994923d7821f7c7c30766f27969..5f220dd476955c7b59425a4cbf79fe3c08cda3d7 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
@@ -230,7 +228,6 @@ WriteCpuSaveState (
   IN EFI_SMM_CPU_SAVE_STATE  *ToWrite\r
   )\r
 {\r
-  EFI_STATUS             Status;\r
   UINTN                  Index;\r
   EFI_SMM_CPU_STATE      *State;\r
   EFI_SMI_CPU_SAVE_STATE *SaveState;\r
@@ -252,14 +249,14 @@ WriteCpuSaveState (
   State->x86.AutoHALTRestart = SaveState->AutoHALTRestart;\r
   \r
   for (Index = 0; Index < sizeof (mCpuSaveStateConvTable) / sizeof (CPU_SAVE_STATE_CONVERSION); Index++) {\r
-    Status = mSmmCpu->WriteSaveState (\r
-                        mSmmCpu,\r
-                        (UINTN)sizeof (UINT32),\r
-                        mCpuSaveStateConvTable[Index].Register,\r
-                        CpuIndex,\r
-                        ((UINT8 *)SaveState) + \r
-                        mCpuSaveStateConvTable[Index].Offset\r
-                        );\r
+    mSmmCpu->WriteSaveState (\r
+               mSmmCpu,\r
+               (UINTN)sizeof (UINT32),\r
+               mCpuSaveStateConvTable[Index].Register,\r
+               CpuIndex,\r
+               ((UINT8 *)SaveState) +\r
+               mCpuSaveStateConvTable[Index].Offset\r
+               );\r
   }\r
 }\r
 \r
@@ -347,14 +344,12 @@ PageFaultHandler (
   )\r
 {\r
   BOOLEAN        IsHandled;\r
-  UINT64         *PageTable;\r
   UINT64         PFAddress;\r
   UINTN          NumCpuStatePages;\r
   \r
   ASSERT (mPageTableHookEnabled);\r
   AcquireSpinLock (&mPFLock);\r
 \r
-  PageTable = (UINT64*)(UINTN)(AsmReadCr3 () & mPhyMask);\r
   PFAddress = AsmReadCr2 ();\r
   NumCpuStatePages = EFI_SIZE_TO_PAGES (mNumberOfProcessors * sizeof (EFI_SMM_CPU_SAVE_STATE));\r
   IsHandled = FALSE;\r
@@ -743,60 +738,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 +1074,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 +1148,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 +1192,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