Ronak Kanabar | 1ae366f | 2023-06-07 01:21:56 +0530 | [diff] [blame^] | 1 | /** @file |
| 2 | The microcode patch HOB is used to store the information of: |
| 3 | A. Base address and size of the loaded microcode patches data; |
| 4 | B. Detected microcode patch for each processor within system. |
| 5 | |
| 6 | Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> |
| 7 | SPDX-License-Identifier: BSD-2-Clause-Patent |
| 8 | |
| 9 | **/ |
| 10 | |
| 11 | #ifndef _MICROCODE_PATCH_HOB_H_ |
| 12 | #define _MICROCODE_PATCH_HOB_H_ |
| 13 | |
| 14 | extern EFI_GUID gEdkiiMicrocodePatchHobGuid; |
| 15 | |
| 16 | // |
| 17 | // The EDKII microcode patch HOB will be produced by MpInitLib and it can be |
| 18 | // consumed by modules that want to detect/apply microcode patches. |
| 19 | // |
| 20 | typedef struct { |
| 21 | // |
| 22 | // The base address of the microcode patches data after being loaded into |
| 23 | // memory. |
| 24 | // |
| 25 | UINT64 MicrocodePatchAddress; |
| 26 | // |
| 27 | // The total size of the loaded microcode patches. |
| 28 | // |
| 29 | UINT64 MicrocodePatchRegionSize; |
| 30 | // |
| 31 | // The number of processors within the system. |
| 32 | // |
| 33 | UINT32 ProcessorCount; |
| 34 | // |
| 35 | // An array with 'ProcessorCount' elements that stores the offset (with |
| 36 | // regard to 'MicrocodePatchAddress') of the detected microcode patch |
| 37 | // (including the CPU_MICROCODE_HEADER data structure) for each processor. |
| 38 | // If no microcode patch is detected for certain processor, the relating |
| 39 | // element will be set to MAX_UINT64. |
| 40 | // |
| 41 | UINT64 ProcessorSpecificPatchOffset[0]; |
| 42 | } EDKII_MICROCODE_PATCH_HOB; |
| 43 | |
| 44 | #endif |