mirror of https://github.com/acidanthera/audk.git
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:
parent
f2b074398c
commit
2a5c08caaf
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
DebugLib
|
||||
LocalApicLib
|
||||
HobLib
|
||||
BaseMemoryLib
|
||||
|
||||
[Ppis]
|
||||
gEfiSecPlatformInformationPpiGuid ## SOMETIMES_CONSUMES
|
||||
|
|
Loading…
Reference in New Issue