UefiCpuPkg[all]
0.90
|
Functions | |
UINT32 EFIAPI | GetProcessorMicrocodeSignature (VOID) |
VOID EFIAPI | GetProcessorMicrocodeCpuId (EDKII_PEI_MICROCODE_CPU_ID *MicrocodeCpuId) |
UINT32 EFIAPI | GetMicrocodeLength (IN CPU_MICROCODE_HEADER *Microcode) |
VOID EFIAPI | LoadMicrocode (IN CPU_MICROCODE_HEADER *Microcode) |
BOOLEAN EFIAPI | IsValidMicrocode (IN CPU_MICROCODE_HEADER *Microcode, IN UINTN MicrocodeLength, IN UINT32 MinimumRevision, IN EDKII_PEI_MICROCODE_CPU_ID *MicrocodeCpuIds, IN UINTN MicrocodeCpuIdCount, IN BOOLEAN VerifyChecksum) |
Public include file for Microcode library.
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
UINT32 EFIAPI GetMicrocodeLength | ( | IN CPU_MICROCODE_HEADER * | Microcode | ) |
Return the total size of the microcode entry.
Logic follows pseudo code in SDM as below:
N = 512 If (Update.DataSize != 00000000H) N = Update.TotalSize / 4
If Microcode is NULL, then ASSERT.
Microcode | Pointer to the microcode entry. |
VOID EFIAPI GetProcessorMicrocodeCpuId | ( | EDKII_PEI_MICROCODE_CPU_ID * | MicrocodeCpuId | ) |
Get the processor signature and platform ID for current processor.
MicrocodeCpuId | Return the processor signature and platform ID. |
UINT32 EFIAPI GetProcessorMicrocodeSignature | ( | VOID | ) |
Get microcode update signature of currently loaded microcode update.
BOOLEAN EFIAPI IsValidMicrocode | ( | IN CPU_MICROCODE_HEADER * | Microcode, |
IN UINTN | MicrocodeLength, | ||
IN UINT32 | MinimumRevision, | ||
IN EDKII_PEI_MICROCODE_CPU_ID * | MicrocodeCpuIds, | ||
IN UINTN | MicrocodeCpuIdCount, | ||
IN BOOLEAN | VerifyChecksum | ||
) |
Detect whether specified processor can find matching microcode patch and load it.
Microcode format is as below: +-------------------------------------—+----------------------------------------------—+ | CPU_MICROCODE_HEADER | | +-------------------------------------—+ V | Update Data | CPU_MICROCODE_HEADER.Checksum +-------------------------------------—+----—+ ^ | CPU_MICROCODE_EXTENDED_TABLE_HEADER | | | +-------------------------------------—+ V | | CPU_MICROCODE_EXTENDED_TABLE[0] | CPU_MICROCODE_EXTENDED_TABLE_HEADER.Checksum | | CPU_MICROCODE_EXTENDED_TABLE[1] | ^ | | ... | | | +-------------------------------------—+----—+--------------------------------------—+
There may by multiple CPU_MICROCODE_EXTENDED_TABLE in this format. The count of CPU_MICROCODE_EXTENDED_TABLE is indicated by ExtendedSignatureCount of CPU_MICROCODE_EXTENDED_TABLE_HEADER structure.
If Microcode is NULL, then ASSERT.
Microcode | Pointer to a microcode entry. |
MicrocodeLength | The total length of the microcode entry. |
MinimumRevision | The microcode whose revision <= MinimumRevision is treated as invalid. Caller can supply value get from GetProcessorMicrocodeSignature() to check whether the microcode is newer than loaded one. Caller can supply 0 to treat any revision (except 0) microcode as valid. |
MicrocodeCpuIds | Pointer to an array of processor signature and platform ID that represents a set of processors. Caller can supply zero-element array to skip the processor signature and platform ID check. |
MicrocodeCpuIdCount | The number of elements in MicrocodeCpuIds. |
VerifyChecksum | FALSE to skip all the checksum verifications. |
TRUE | The microcode is valid. |
FALSE | The microcode is invalid. |
VOID EFIAPI LoadMicrocode | ( | IN CPU_MICROCODE_HEADER * | Microcode | ) |
Load the microcode to the processor.
If Microcode is NULL, then ASSERT.
Microcode | Pointer to the microcode entry. |