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