IntelSiliconPkg MicrocodeUpdateDxe: Honor FIT table

It is the second step for
https://bugzilla.tianocore.org/show_bug.cgi?id=540.

V2: Use error handling instead of ASSERT for FIT table checking result.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
Star Zeng
2018-03-28 16:52:12 +08:00
parent 0edb7ec5ce
commit e91797885a
4 changed files with 601 additions and 29 deletions

View File

@ -20,6 +20,8 @@
#include <Guid/SystemResourceTable.h>
#include <Guid/MicrocodeFmp.h>
#include <IndustryStandard/FirmwareInterfaceTable.h>
#include <Protocol/FirmwareManagement.h>
#include <Protocol/MpService.h>
@ -57,6 +59,13 @@ typedef struct {
BOOLEAN InUse;
} MICROCODE_INFO;
typedef struct {
CPU_MICROCODE_HEADER *MicrocodeEntryPoint;
UINTN TotalSize;
BOOLEAN InUse;
BOOLEAN Empty;
} FIT_MICROCODE_INFO;
typedef struct {
UINTN CpuIndex;
UINT32 ProcessorSignature;
@ -86,11 +95,13 @@ struct _MICROCODE_FMP_PRIVATE_DATA {
UINTN BspIndex;
UINTN ProcessorCount;
PROCESSOR_INFO *ProcessorInfo;
UINT32 FitMicrocodeEntryCount;
FIT_MICROCODE_INFO *FitMicrocodeInfo;
};
typedef struct _MICROCODE_FMP_PRIVATE_DATA MICROCODE_FMP_PRIVATE_DATA;
#define MICROCODE_FMP_LAST_ATTEMPT_VARIABLE_NAME L"MicrocodeLastAttempVar"
#define MICROCODE_FMP_LAST_ATTEMPT_VARIABLE_NAME L"MicrocodeLastAttemptVar"
/**
Returns a pointer to the MICROCODE_FMP_PRIVATE_DATA structure from the input a as Fmp.