diff options
author | duntan <dun.tan@intel.com> | 2024-01-08 13:08:03 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2024-01-09 16:31:57 +0000 |
commit | 2a5c08caaf26568bc8e03cb4195c231af70da35c (patch) | |
tree | 2c49d239183aab377e5f77185c27ec404a966b46 | |
parent | f2b074398ca0624206355524a1c5f653ff87876a (diff) | |
download | edk2-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.h | 2 | ||||
-rw-r--r-- | UefiCpuPkg/Library/MpInitLib/MpLib.c | 2 | ||||
-rw-r--r-- | UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c | 15 | ||||
-rw-r--r-- | UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf | 1 |
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
|