Skip to content

Commit

Permalink
StandaloneMmPkg/MemLib: remove unnecessary check
Browse files Browse the repository at this point in the history
remove unnecessary check in MmIsBufferOutsideMmValid

Signed-off-by: Dun Tan <[email protected]>
  • Loading branch information
td36 committed Sep 23, 2024
1 parent efe8dd6 commit 08671b5
Show file tree
Hide file tree
Showing 4 changed files with 1 addition and 156 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,34 +32,6 @@ MmMemLibInternalCalculateMaximumSupportAddress (
DEBUG ((DEBUG_INFO, "mMmMemLibInternalMaximumSupportAddress = 0x%lx\n", mMmMemLibInternalMaximumSupportAddress));
}

/**
Initialize cached Mmram Ranges from HOB.
@retval EFI_UNSUPPORTED The routine is unable to extract MMRAM information.
@retval EFI_SUCCESS MmRanges are populated successfully.
**/
EFI_STATUS
MmMemLibInternalPopulateMmramRanges (
VOID
)
{
// Not implemented for AARCH64.
return EFI_SUCCESS;
}

/**
Deinitialize cached Mmram Ranges.
**/
VOID
MmMemLibInternalFreeMmramRanges (
VOID
)
{
// Not implemented for AARCH64.
}

/**
Initialize valid non-Mmram Ranges from Resource HOB.
Expand Down
41 changes: 1 addition & 40 deletions StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@

#include <StandaloneMmMemLib.h>

EFI_MMRAM_DESCRIPTOR *mMmMemLibInternalMmramRanges;
UINTN mMmMemLibInternalMmramCount;

//
// Maximum support address used to check input buffer
//
Expand All @@ -39,8 +36,6 @@ MmIsBufferOutsideMmValid (
IN UINT64 Length
)
{
UINTN Index;

//
// Check override.
// NOTE: (B:0->L:4G) is invalid for IA32, but (B:1->L:4G-1)/(B:4G-1->L:1) is valid.
Expand All @@ -62,28 +57,6 @@ MmIsBufferOutsideMmValid (
return FALSE;
}

for (Index = 0; Index < mMmMemLibInternalMmramCount; Index++) {
if (((Buffer >= mMmMemLibInternalMmramRanges[Index].CpuStart) &&
(Buffer < mMmMemLibInternalMmramRanges[Index].CpuStart + mMmMemLibInternalMmramRanges[Index].PhysicalSize)) ||
((mMmMemLibInternalMmramRanges[Index].CpuStart >= Buffer) &&
(mMmMemLibInternalMmramRanges[Index].CpuStart < Buffer + Length)))
{
DEBUG ((
DEBUG_ERROR,
"MmIsBufferOutsideMmValid: Overlap: Buffer (0x%lx) - Length (0x%lx), ",
Buffer,
Length
));
DEBUG ((
DEBUG_ERROR,
"CpuStart (0x%lx) - PhysicalSize (0x%lx)\n",
mMmMemLibInternalMmramRanges[Index].CpuStart,
mMmMemLibInternalMmramRanges[Index].PhysicalSize
));
return FALSE;
}
}

return MmMemLibInternalIsValidNonMmramRange (Buffer, Length);
}

Expand Down Expand Up @@ -254,8 +227,6 @@ MemLibConstructor (
IN EFI_MM_SYSTEM_TABLE *MmSystemTable
)
{
EFI_STATUS Status;

//
// Calculate and save maximum support address
//
Expand All @@ -266,12 +237,7 @@ MemLibConstructor (
//
MmMemLibInternalPopulateValidNonMmramRanges ();

//
// Initialize cached Mmram Ranges from HOB.
//
Status = MmMemLibInternalPopulateMmramRanges ();

return Status;
return EFI_SUCCESS;
}

/**
Expand All @@ -290,11 +256,6 @@ MemLibDestructor (
IN EFI_MM_SYSTEM_TABLE *MmSystemTable
)
{
//
// Deinitialize cached Mmram Ranges.
//
MmMemLibInternalFreeMmramRanges ();

//
// Deinitialize cached non-Mmram Ranges.
//
Expand Down
21 changes: 0 additions & 21 deletions StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,27 +32,6 @@ MmMemLibInternalCalculateMaximumSupportAddress (
VOID
);

/**
Initialize cached Mmram Ranges from HOB.
@retval EFI_UNSUPPORTED The routine is unable to extract MMRAM information.
@retval EFI_SUCCESS MmRanges are populated successfully.
**/
EFI_STATUS
MmMemLibInternalPopulateMmramRanges (
VOID
);

/**
Deinitialize cached Mmram Ranges.
**/
VOID
MmMemLibInternalFreeMmramRanges (
VOID
);

/**
Initialize valid non-Mmram Ranges from Resource HOB.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ UINTN mValidNonMmramCount;
// Maximum support address used to check input buffer
//
extern EFI_PHYSICAL_ADDRESS mMmMemLibInternalMaximumSupportAddress;
extern EFI_MMRAM_DESCRIPTOR *mMmMemLibInternalMmramRanges;
extern UINTN mMmMemLibInternalMmramCount;

/**
Calculate and save the maximum support address.
Expand Down Expand Up @@ -74,71 +72,6 @@ MmMemLibInternalCalculateMaximumSupportAddress (
DEBUG ((DEBUG_INFO, "mMmMemLibInternalMaximumSupportAddress = 0x%lx\n", mMmMemLibInternalMaximumSupportAddress));
}

/**
Initialize cached Mmram Ranges from HOB.
@retval EFI_UNSUPPORTED The routine is unable to extract MMRAM information.
@retval EFI_SUCCESS MmRanges are populated successfully.
**/
EFI_STATUS
MmMemLibInternalPopulateMmramRanges (
VOID
)
{
VOID *HobStart;
EFI_HOB_GUID_TYPE *MmramRangesHob;
EFI_MMRAM_HOB_DESCRIPTOR_BLOCK *MmramRangesHobData;
EFI_MMRAM_DESCRIPTOR *MmramDescriptors;

HobStart = GetHobList ();
DEBUG ((DEBUG_INFO, "%a - 0x%x\n", __func__, HobStart));

//
// Search for a Hob containing the MMRAM ranges
//
MmramRangesHob = GetFirstGuidHob (&gEfiSmmSmramMemoryGuid);
if (MmramRangesHob == NULL) {
MmramRangesHob = GetFirstGuidHob (&gEfiMmPeiMmramMemoryReserveGuid);
if (MmramRangesHob == NULL) {
return EFI_UNSUPPORTED;
}
}

MmramRangesHobData = GET_GUID_HOB_DATA (MmramRangesHob);
if ((MmramRangesHobData == NULL) || (MmramRangesHobData->Descriptor == NULL)) {
return EFI_UNSUPPORTED;
}

mMmMemLibInternalMmramCount = MmramRangesHobData->NumberOfMmReservedRegions;
MmramDescriptors = MmramRangesHobData->Descriptor;

mMmMemLibInternalMmramRanges = AllocatePool (mMmMemLibInternalMmramCount * sizeof (EFI_MMRAM_DESCRIPTOR));
if (mMmMemLibInternalMmramRanges) {
CopyMem (
mMmMemLibInternalMmramRanges,
MmramDescriptors,
mMmMemLibInternalMmramCount * sizeof (EFI_MMRAM_DESCRIPTOR)
);
}

return EFI_SUCCESS;
}

/**
Deinitialize cached Mmram Ranges.
**/
VOID
MmMemLibInternalFreeMmramRanges (
VOID
)
{
if (mMmMemLibInternalMmramRanges != NULL) {
FreePool (mMmMemLibInternalMmramRanges);
}
}

/**
Merge continuous memory map entries whose type is
EfiLoaderCode/Data, EfiBootServicesCode/Data, EfiConventionalMemory,
Expand Down

0 comments on commit 08671b5

Please sign in to comment.