Reviewed-by: Ruiyu Ni <[email protected]> Thanks/Ray
> -----Original Message----- > From: Dong, Eric > Sent: Wednesday, July 18, 2018 1:19 PM > To: [email protected] > Cc: Ni, Ruiyu <[email protected]>; Jeff Fan <[email protected]>; > Laszlo Ersek <[email protected]> > Subject: [Patch v2] UefiCpuPkg/MpInitLib: Optimize get processor number > performance. > > Current function has low performance because it calls GetApicId many times. > > New logic call GetApicId once and base on this value to search the processor. > > V2 changes: > Rollback V1 change which base on stack info to get AP index because this > solution may return error AP index if stack buffer overflow. > > Cc: Ruiyu Ni <[email protected]> > Cc: Jeff Fan <[email protected]> > Cc: Laszlo Ersek <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Eric Dong <[email protected]> > --- > UefiCpuPkg/Library/MpInitLib/MpLib.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c > b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index 722db2a01f..0bb0582985 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -435,16 +435,19 @@ GetProcessorNumber ( > UINTN TotalProcessorNumber; > UINTN Index; > CPU_INFO_IN_HOB *CpuInfoInHob; > + UINT32 CurrentApicId; > > CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData- > >CpuInfoInHob; > > TotalProcessorNumber = CpuMpData->CpuCount; > + CurrentApicId = GetApicId (); > for (Index = 0; Index < TotalProcessorNumber; Index ++) { > - if (CpuInfoInHob[Index].ApicId == GetApicId ()) { > + if (CpuInfoInHob[Index].ApicId == CurrentApicId) { > *ProcessorNumber = Index; > return EFI_SUCCESS; > } > } > + > return EFI_NOT_FOUND; > } > > -- > 2.15.0.windows.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

