mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 05:34:31 +02:00
UefiCpuPkg: Sort mProtectionMemRange when ReadyToLock
Sort mProtectionMemRange in InitProtectedMemRange() when ReadyToLock. Signed-off-by: Dun Tan <dun.tan@intel.com> Cc: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
7132df94ac
commit
b4394cca2d
@ -375,6 +375,32 @@ IsAddressSplit (
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Function to compare 2 MEMORY_PROTECTION_RANGE based on range base.
|
||||||
|
|
||||||
|
@param[in] Buffer1 pointer to Device Path poiner to compare
|
||||||
|
@param[in] Buffer2 pointer to second DevicePath pointer to compare
|
||||||
|
|
||||||
|
@retval 0 Buffer1 equal to Buffer2
|
||||||
|
@retval <0 Buffer1 is less than Buffer2
|
||||||
|
@retval >0 Buffer1 is greater than Buffer2
|
||||||
|
**/
|
||||||
|
INTN
|
||||||
|
EFIAPI
|
||||||
|
ProtectionRangeCompare (
|
||||||
|
IN CONST VOID *Buffer1,
|
||||||
|
IN CONST VOID *Buffer2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (((MEMORY_PROTECTION_RANGE *)Buffer1)->Range.Base > ((MEMORY_PROTECTION_RANGE *)Buffer2)->Range.Base) {
|
||||||
|
return 1;
|
||||||
|
} else if (((MEMORY_PROTECTION_RANGE *)Buffer1)->Range.Base < ((MEMORY_PROTECTION_RANGE *)Buffer2)->Range.Base) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize the protected memory ranges and the 4KB-page mapped memory ranges.
|
Initialize the protected memory ranges and the 4KB-page mapped memory ranges.
|
||||||
|
|
||||||
@ -397,6 +423,7 @@ InitProtectedMemRange (
|
|||||||
EFI_PHYSICAL_ADDRESS Base2MBAlignedAddress;
|
EFI_PHYSICAL_ADDRESS Base2MBAlignedAddress;
|
||||||
UINT64 High4KBPageSize;
|
UINT64 High4KBPageSize;
|
||||||
UINT64 Low4KBPageSize;
|
UINT64 Low4KBPageSize;
|
||||||
|
MEMORY_PROTECTION_RANGE MemProtectionRange;
|
||||||
|
|
||||||
NumberOfDescriptors = 0;
|
NumberOfDescriptors = 0;
|
||||||
NumberOfAddedDescriptors = mSmmCpuSmramRangeCount;
|
NumberOfAddedDescriptors = mSmmCpuSmramRangeCount;
|
||||||
@ -533,6 +560,11 @@ InitProtectedMemRange (
|
|||||||
|
|
||||||
mSplitMemRangeCount = NumberOfSpliteRange;
|
mSplitMemRangeCount = NumberOfSpliteRange;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Sort the mProtectionMemRange
|
||||||
|
//
|
||||||
|
QuickSort (mProtectionMemRange, mProtectionMemRangeCount, sizeof (MEMORY_PROTECTION_RANGE), (BASE_SORT_COMPARE)ProtectionRangeCompare, &MemProtectionRange);
|
||||||
|
|
||||||
DEBUG ((DEBUG_INFO, "SMM Profile Memory Ranges:\n"));
|
DEBUG ((DEBUG_INFO, "SMM Profile Memory Ranges:\n"));
|
||||||
for (Index = 0; Index < mProtectionMemRangeCount; Index++) {
|
for (Index = 0; Index < mProtectionMemRangeCount; Index++) {
|
||||||
DEBUG ((DEBUG_INFO, "mProtectionMemRange[%d].Base = %lx\n", Index, mProtectionMemRange[Index].Range.Base));
|
DEBUG ((DEBUG_INFO, "mProtectionMemRange[%d].Base = %lx\n", Index, mProtectionMemRange[Index].Range.Base));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user