mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg: Sort mSmmCpuSmramRanges in FindSmramInfo
Sort mSmmCpuSmramRanges after get the SMRAM info in FindSmramInfo() function. 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
b4dde1ae6a
commit
7132df94ac
|
@ -1219,6 +1219,32 @@ PiCpuSmmEntry (
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Function to compare 2 EFI_SMRAM_DESCRIPTOR based on CpuStart.
|
||||
|
||||
@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
|
||||
CpuSmramRangeCompare (
|
||||
IN CONST VOID *Buffer1,
|
||||
IN CONST VOID *Buffer2
|
||||
)
|
||||
{
|
||||
if (((EFI_SMRAM_DESCRIPTOR *)Buffer1)->CpuStart > ((EFI_SMRAM_DESCRIPTOR *)Buffer2)->CpuStart) {
|
||||
return 1;
|
||||
} else if (((EFI_SMRAM_DESCRIPTOR *)Buffer1)->CpuStart < ((EFI_SMRAM_DESCRIPTOR *)Buffer2)->CpuStart) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Find out SMRAM information including SMRR base and SMRR size.
|
||||
|
@ -1240,6 +1266,7 @@ FindSmramInfo (
|
|||
UINTN Index;
|
||||
UINT64 MaxSize;
|
||||
BOOLEAN Found;
|
||||
EFI_SMRAM_DESCRIPTOR SmramDescriptor;
|
||||
|
||||
//
|
||||
// Get SMM Access Protocol
|
||||
|
@ -1262,6 +1289,11 @@ FindSmramInfo (
|
|||
|
||||
mSmmCpuSmramRangeCount = Size / sizeof (EFI_SMRAM_DESCRIPTOR);
|
||||
|
||||
//
|
||||
// Sort the mSmmCpuSmramRanges
|
||||
//
|
||||
QuickSort (mSmmCpuSmramRanges, mSmmCpuSmramRangeCount, sizeof (EFI_SMRAM_DESCRIPTOR), (BASE_SORT_COMPARE)CpuSmramRangeCompare, &SmramDescriptor);
|
||||
|
||||
//
|
||||
// Find the largest SMRAM range between 1MB and 4GB that is at least 256K - 4K in size
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue