Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Tan, Dun <dun....@intel.com> > Sent: Thursday, June 8, 2023 10:28 AM > 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 V5 11/14] UefiCpuPkg: Sort mSmmCpuSmramRanges in > FindSmramInfo > > Sort mSmmCpuSmramRanges after get the SMRAM info in > FindSmramInfo() function. > > 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/PiSmmCpuDxeSmm.c | 32 > ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > index 2144d6ade8..2568ffd677 100644 > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > @@ -1197,6 +1197,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. > @@ -1218,6 +1244,7 @@ FindSmramInfo ( > UINTN Index; > UINT64 MaxSize; > BOOLEAN Found; > + EFI_SMRAM_DESCRIPTOR SmramDescriptor; > > // > // Get SMM Access Protocol > @@ -1240,6 +1267,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 > // > -- > 2.31.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#105923): https://edk2.groups.io/g/devel/message/105923 Mute This Topic: https://groups.io/mt/99399239/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-