--- /dev/null
+/** @file\r
+ The microcode patch HOB is used to store the information of:\r
+ A. Base address and size of the loaded microcode patches data;\r
+ B. Detected microcode patch for each processor within system.\r
+\r
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef _MICROCODE_PATCH_HOB_H_\r
+#define _MICROCODE_PATCH_HOB_H_\r
+\r
+extern EFI_GUID gEdkiiMicrocodePatchHobGuid;\r
+\r
+//\r
+// The EDKII microcode patch HOB will be produced by MpInitLib and it can be\r
+// consumed by modules that want to detect/apply microcode patches.\r
+//\r
+typedef struct {\r
+ //\r
+ // The base address of the microcode patches data after being loaded into\r
+ // memory.\r
+ //\r
+ UINT64 MicrocodePatchAddress;\r
+ //\r
+ // The total size of the loaded microcode patches.\r
+ //\r
+ UINT64 MicrocodePatchRegionSize;\r
+ //\r
+ // The number of processors within the system.\r
+ //\r
+ UINT32 ProcessorCount;\r
+ //\r
+ // An array with 'ProcessorCount' elements that stores the offset (with\r
+ // regard to 'MicrocodePatchAddress') of the detected microcode patch\r
+ // (including the CPU_MICROCODE_HEADER data structure) for each processor.\r
+ // If no microcode patch is detected for certain processor, the relating\r
+ // element will be set to MAX_UINT64.\r
+ //\r
+ UINT64 ProcessorSpecificPatchOffset[0];\r
+} EDKII_MICROCODE_PATCH_HOB;\r
+\r
+#endif\r
## Include/Guid/CpuFeaturesInitDone.h\r
gEdkiiCpuFeaturesInitDoneGuid = { 0xc77c3a41, 0x61ab, 0x4143, { 0x98, 0x3e, 0x33, 0x39, 0x28, 0x6, 0x28, 0xe5 }}\r
\r
+ ## Include/Guid/MicrocodePatchHob.h\r
+ gEdkiiMicrocodePatchHobGuid = { 0xd178f11d, 0x8716, 0x418e, { 0xa1, 0x31, 0x96, 0x7d, 0x2a, 0xc4, 0x28, 0x43 }}\r
+\r
[Protocols]\r
## Include/Protocol/SmmCpuService.h\r
gEfiSmmCpuServiceProtocolGuid = { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}\r