| /** @file |
| This file declares EDKII Shadow Microcode PPI. |
| |
| Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| **/ |
| |
| #ifndef __PPI_SHADOW_MICROCODE_H__ |
| #define __PPI_SHADOW_MICROCODE_H__ |
| |
| #define EDKII_PEI_SHADOW_MICROCODE_PPI_GUID \ |
| { \ |
| 0x430f6965, 0x9a69, 0x41c5, { 0x93, 0xed, 0x8b, 0xf0, 0x64, 0x35, 0xc1, 0xc6 } \ |
| } |
| |
| typedef struct _EDKII_PEI_SHADOW_MICROCODE_PPI EDKII_PEI_SHADOW_MICROCODE_PPI; |
| |
| typedef struct { |
| UINT32 ProcessorSignature; |
| UINT8 PlatformId; |
| } EDKII_PEI_MICROCODE_CPU_ID; |
| |
| /** |
| Shadow microcode update patches to memory. |
| |
| The function is used for shadowing microcode update patches to a continuous memory. |
| It shall allocate memory buffer and only shadow the microcode patches for those |
| processors specified by MicrocodeCpuId array. The checksum verification may be |
| skiped in this function so the caller must perform checksum verification before |
| using the microcode patches in returned memory buffer. |
| |
| @param[in] This The PPI instance pointer. |
| @param[in] CpuIdCount Number of elements in MicrocodeCpuId array. |
| @param[in] MicrocodeCpuId A pointer to an array of EDKII_PEI_MICROCODE_CPU_ID |
| structures. |
| @param[out] BufferSize Pointer to receive the total size of Buffer. |
| @param[out] Buffer Pointer to receive address of allocated memory |
| with microcode patches data in it. |
| |
| @retval EFI_SUCCESS The microcode has been shadowed to memory. |
| @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EDKII_PEI_SHADOW_MICROCODE)( |
| IN EDKII_PEI_SHADOW_MICROCODE_PPI *This, |
| IN UINTN CpuIdCount, |
| IN EDKII_PEI_MICROCODE_CPU_ID *MicrocodeCpuId, |
| OUT UINTN *BufferSize, |
| OUT VOID **Buffer |
| ); |
| |
| /// |
| /// This PPI is installed by some platform or chipset-specific PEIM that |
| /// abstracts handling microcode shadow support. |
| /// |
| struct _EDKII_PEI_SHADOW_MICROCODE_PPI { |
| EDKII_PEI_SHADOW_MICROCODE ShadowMicrocode; |
| }; |
| |
| extern EFI_GUID gEdkiiPeiShadowMicrocodePpiGuid; |
| |
| #endif |