UefiCpuPkg/MpInitLib: Produce EDKII microcode patch HOB
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2430 This commit will update the MpInitLib to: A. Collect the base address and size information after microcode patches being loaded into memory; B. Collect the detected microcode patch for each processor within system; C. Based on the collected information, produce the EDKII microcode patch HOB. Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Siyuan Fu <siyuan.fu@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Hao A Wu <hao.a.wu@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
@@ -138,6 +138,7 @@ typedef struct {
|
||||
EFI_EVENT WaitEvent;
|
||||
UINT32 ProcessorSignature;
|
||||
UINT8 PlatformId;
|
||||
UINT64 MicrocodeEntryAddr;
|
||||
} CPU_AP_DATA;
|
||||
|
||||
//
|
||||
@@ -580,13 +581,15 @@ CheckAndUpdateApsStatus (
|
||||
/**
|
||||
Detect whether specified processor can find matching microcode patch and load it.
|
||||
|
||||
@param[in] CpuMpData The pointer to CPU MP Data structure.
|
||||
@param[in] IsBspCallIn Indicate whether the caller is BSP or not.
|
||||
@param[in] CpuMpData The pointer to CPU MP Data structure.
|
||||
@param[in] ProcessorNumber The handle number of the processor. The range is
|
||||
from 0 to the total number of logical processors
|
||||
minus 1.
|
||||
**/
|
||||
VOID
|
||||
MicrocodeDetect (
|
||||
IN CPU_MP_DATA *CpuMpData,
|
||||
IN BOOLEAN IsBspCallIn
|
||||
IN UINTN ProcessorNumber
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -619,5 +622,20 @@ EnableDebugAgent (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Find the current Processor number by APIC ID.
|
||||
|
||||
@param[in] CpuMpData Pointer to PEI CPU MP Data
|
||||
@param[out] ProcessorNumber Return the pocessor number found
|
||||
|
||||
@retval EFI_SUCCESS ProcessorNumber is found and returned.
|
||||
@retval EFI_NOT_FOUND ProcessorNumber is not found.
|
||||
**/
|
||||
EFI_STATUS
|
||||
GetProcessorNumber (
|
||||
IN CPU_MP_DATA *CpuMpData,
|
||||
OUT UINTN *ProcessorNumber
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user