Reviewed-by: Ray Ni <ray.ni@intel.com>
> -----Original Message-----
> From: Tan, Dun <dun.tan@intel.com>
> Sent: Thursday, June 8, 2023 10:28 AM
> To: devel@edk2.groups.io
> Cc: Dong, Eric <eric.dong@intel.com>; Ni, Ray <ray.ni@intel.com>; Kumar,
> Rahul R <rahul.r.kumar@intel.com>; Gerd Hoffmann <kraxel@redhat.com>
> Subject: [Patch V5 12/14] 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>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Rahul Kumar <rahul1.kumar@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> ---
> UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 32
> ++++++++++++++++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
> b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
> index 5625ba0cac..2a1f132b29 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
> @@ -375,6 +375,32 @@ IsAddressSplit (
> 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.
>
> @@ -397,6 +423,7 @@ InitProtectedMemRange (
> EFI_PHYSICAL_ADDRESS Base2MBAlignedAddress;
> UINT64 High4KBPageSize;
> UINT64 Low4KBPageSize;
> + MEMORY_PROTECTION_RANGE MemProtectionRange;
>
> NumberOfDescriptors = 0;
> NumberOfAddedDescriptors = mSmmCpuSmramRangeCount;
> @@ -533,6 +560,11 @@ InitProtectedMemRange (
>
> 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"));
> for (Index = 0; Index < mProtectionMemRangeCount; Index++) {
> DEBUG ((DEBUG_INFO, "mProtectionMemRange[%d].Base = %lx\n", Index,
> mProtectionMemRange[Index].Range.Base));
> --
> 2.31.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105924): https://edk2.groups.io/g/devel/message/105924
Mute This Topic: https://groups.io/mt/99399240/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3901457/1787277/102458076/xyzzy [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-