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>
This commit is contained in:
duntan 2024-01-08 13:08:03 +08:00 committed by mergify[bot]
parent f2b074398c
commit 2a5c08caaf
4 changed files with 13 additions and 7 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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) {

View File

@ -32,6 +32,7 @@
DebugLib
LocalApicLib
HobLib
BaseMemoryLib
[Ppis]
gEfiSecPlatformInformationPpiGuid ## SOMETIMES_CONSUMES