Why do you add the sort logic?
I thought you might have further changes to remove some unnecessary logic that 
deals with un-sorted array.

> -----Original Message-----
> From: Ni, Ray
> Sent: Friday, June 2, 2023 11:34 AM
> To: Tan, Dun <dun....@intel.com>; devel@edk2.groups.io
> Cc: Dong, Eric <eric.d...@intel.com>; Kumar, Rahul R
> <rahul.r.ku...@intel.com>; Gerd Hoffmann <kra...@redhat.com>
> Subject: RE: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when
> ReadyToLock
> 
> Similar comments as patch #12.
> You could avoid pool allocation.
> 
> > -----Original Message-----
> > From: Tan, Dun <dun....@intel.com>
> > Sent: Tuesday, May 16, 2023 6:00 PM
> > To: devel@edk2.groups.io
> > Cc: Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; Kumar,
> Rahul
> > R <rahul.r.ku...@intel.com>; Gerd Hoffmann <kra...@redhat.com>
> > Subject: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when
> > ReadyToLock
> >
> > Sort mProtectionMemRange in InitProtectedMemRange() when
> > ReadyToLock.
> >
> > Signed-off-by: Dun Tan <dun....@intel.com>
> > Cc: Eric Dong <eric.d...@intel.com>
> > Cc: Ray Ni <ray...@intel.com>
> > Cc: Rahul Kumar <rahul1.ku...@intel.com>
> > Cc: Gerd Hoffmann <kra...@redhat.com>
> > ---
> >  UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 35
> > +++++++++++++++++++++++++++++++++++
> >  1 file changed, 35 insertions(+)
> >
> > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
> > b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
> > index 5625ba0cac..b298e2fb99 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;
> > +  VOID                             *Buffer;
> >
> >    NumberOfDescriptors      = 0;
> >    NumberOfAddedDescriptors = mSmmCpuSmramRangeCount;
> > @@ -533,6 +560,14 @@ InitProtectedMemRange (
> >
> >    mSplitMemRangeCount = NumberOfSpliteRange;
> >
> > +  //
> > +  // Sort the mProtectionMemRange
> > +  //
> > +  Buffer = AllocateZeroPool (sizeof (MEMORY_PROTECTION_RANGE));
> > +  ASSERT (Buffer != NULL);
> > +  QuickSort (mProtectionMemRange, mProtectionMemRangeCount, sizeof
> > (MEMORY_PROTECTION_RANGE),
> > (BASE_SORT_COMPARE)ProtectionRangeCompare, Buffer);
> > +  FreePool (Buffer);
> > +
> >    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 (#105626): https://edk2.groups.io/g/devel/message/105626
Mute This Topic: https://groups.io/mt/98922941/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: 
https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to