summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorduntan <dun.tan@intel.com>2024-01-08 13:08:03 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2024-01-09 16:31:57 +0000
commit2a5c08caaf26568bc8e03cb4195c231af70da35c (patch)
tree2c49d239183aab377e5f77185c27ec404a966b46
parentf2b074398ca0624206355524a1c5f653ff87876a (diff)
downloadedk2-2a5c08caaf26568bc8e03cb4195c231af70da35c.tar.gz
UefiCpuPkg: set EXTENDED_PROCESSOR_INFORMATION to 0
Set EXTENDED_PROCESSOR_INFORMATION to 0 in API MpInitLibGetProcessorInfo() of MpInitLibUp. This commit use ZeroMem() to set all fileds in output EFI_PROCESSOR_INFORMATION to 0 before StatusFlag field is reassigned. Previously EXTENDED_PROCESSOR_INFORMATION in the API MpInitLibGetProcessorInfo() of MpInitLibUp is ignored. In PEI/DXE MpInitLib, EXTENDED_PROCESSOR_INFORMATION will be retrived when BIT24 of input ProcessorNumber is set. This commit can avoid garbage in the output structure in MpInitLibGetProcessorInfo() of MpInitLibUp. Signed-off-by: Dun Tan <dun.tan@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Min Xu <min.m.xu@intel.com> Message-Id: <20240108050804.1718-2-dun.tan@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
-rw-r--r--UefiCpuPkg/Include/Library/MpInitLib.h2
-rw-r--r--UefiCpuPkg/Library/MpInitLib/MpLib.c2
-rw-r--r--UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c15
-rw-r--r--UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf1
4 files changed, 13 insertions, 7 deletions
diff --git a/UefiCpuPkg/Include/Library/MpInitLib.h b/UefiCpuPkg/Include/Library/MpInitLib.h
index 1853c46415..842c6f7ff9 100644
--- a/UefiCpuPkg/Include/Library/MpInitLib.h
+++ b/UefiCpuPkg/Include/Library/MpInitLib.h
@@ -63,6 +63,8 @@ MpInitLibGetNumberOfProcessors (
instant this call is made. This service may only be called from the BSP.
@param[in] ProcessorNumber The handle number of processor.
+ Lower 24 bits contains the actual processor number.
+ BIT24 indicates if the EXTENDED_PROCESSOR_INFORMATION will be retrived.
@param[out] ProcessorInfoBuffer A pointer to the buffer where information for
the requested processor is deposited.
@param[out] HealthData Return processor health data.
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c
index a359906923..cdfb570e61 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c
@@ -2333,6 +2333,8 @@ MpInitLibInitialize (
instant this call is made. This service may only be called from the BSP.
@param[in] ProcessorNumber The handle number of processor.
+ Lower 24 bits contains the actual processor number.
+ BIT24 indicates if the EXTENDED_PROCESSOR_INFORMATION will be retrived.
@param[out] ProcessorInfoBuffer A pointer to the buffer where information for
the requested processor is deposited.
@param[out] HealthData Return processor health data.
diff --git a/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c b/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c
index 86f9fbf903..d4f8611af8 100644
--- a/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c
+++ b/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c
@@ -12,6 +12,7 @@
#include <Library/DebugLib.h>
#include <Library/LocalApicLib.h>
#include <Library/HobLib.h>
+#include <Library/BaseMemoryLib.h>
/**
MP Initialize Library initialization.
@@ -77,6 +78,8 @@ MpInitLibGetNumberOfProcessors (
instant this call is made. This service may only be called from the BSP.
@param[in] ProcessorNumber The handle number of processor.
+ Lower 24 bits contains the actual processor number.
+ BIT24 indicates if the EXTENDED_PROCESSOR_INFORMATION will be retrived.
@param[out] ProcessorInfoBuffer A pointer to the buffer where information for
the requested processor is deposited.
@param[out] HealthData Return processor health data.
@@ -108,13 +111,11 @@ MpInitLibGetProcessorInfo (
return EFI_NOT_FOUND;
}
- ProcessorInfoBuffer->ProcessorId = 0;
- ProcessorInfoBuffer->StatusFlag = PROCESSOR_AS_BSP_BIT |
- PROCESSOR_ENABLED_BIT |
- PROCESSOR_HEALTH_STATUS_BIT;
- ProcessorInfoBuffer->Location.Package = 0;
- ProcessorInfoBuffer->Location.Core = 0;
- ProcessorInfoBuffer->Location.Thread = 0;
+ ZeroMem (ProcessorInfoBuffer, sizeof (*ProcessorInfoBuffer));
+ ProcessorInfoBuffer->StatusFlag = PROCESSOR_AS_BSP_BIT |
+ PROCESSOR_ENABLED_BIT |
+ PROCESSOR_HEALTH_STATUS_BIT;
+
if (HealthData != NULL) {
GuidHob = GetFirstGuidHob (&gEfiSecPlatformInformationPpiGuid);
if (GuidHob != NULL) {
diff --git a/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf b/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf
index 24ad29c03c..eb0a168f74 100644
--- a/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf
+++ b/UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf
@@ -32,6 +32,7 @@
DebugLib
LocalApicLib
HobLib
+ BaseMemoryLib
[Ppis]
gEfiSecPlatformInformationPpiGuid ## SOMETIMES_CONSUMES