diff options
author | Eric Dong <eric.dong@intel.com> | 2018-07-04 16:29:07 +0800 |
---|---|---|
committer | Eric Dong <eric.dong@intel.com> | 2018-07-20 09:24:42 +0800 |
commit | e52838d358d5062c4b1ed8e87bdc3d0f527095d3 (patch) | |
tree | 57b4830444424506c374d7da37f605a9fb399284 /UefiCpuPkg/Library | |
parent | a3fffb4f5e1535e8e542669925eed489fdce6b62 (diff) | |
download | edk2-e52838d358d5062c4b1ed8e87bdc3d0f527095d3.zip edk2-e52838d358d5062c4b1ed8e87bdc3d0f527095d3.tar.gz edk2-e52838d358d5062c4b1ed8e87bdc3d0f527095d3.tar.bz2 |
UefiCpuPkg/MpInitLib: Optimize get processor number performance.
Current function has low performance because it calls GetApicId
in the loop, so it maybe called more than once.
New logic call GetApicId once and base on this value to search
the processor.
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jeff Fan <vanjeff_919@hotmail.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Diffstat (limited to 'UefiCpuPkg/Library')
-rw-r--r-- | UefiCpuPkg/Library/MpInitLib/MpLib.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index e5c701d..c82b985 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;
}
|