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