diff --git a/UefiCpuPkg/Include/Guid/MmCpuSyncConfig.h b/UefiCpuPkg/Include/Guid/MmCpuSyncConfig.h new file mode 100644 index 0000000000..16d96a8290 --- /dev/null +++ b/UefiCpuPkg/Include/Guid/MmCpuSyncConfig.h @@ -0,0 +1,53 @@ +/** @file + This file defines MM_CPU_SYNC_CONFIG which controls how BSP synchronizes with APs + in x86 SMM environment. + + Copyright (c) 2024, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef MM_CPU_SYNC_CONFIG_H_ +#define MM_CPU_SYNC_CONFIG_H_ + +/// +/// The GUID of the MmCpuSyncConfig GUIDed HOB. +/// +#define MM_CPU_SYNC_CONFIG_HOB_GUID \ + { \ + 0x8b90bd26, 0xe4f9, 0x45c2, {0x92, 0xa2, 0x9e, 0xac, 0xe6, 0x0e, 0x9d, 0xcc} \ + } + +typedef enum { + MmCpuSyncModeTradition, + MmCpuSyncModeRelaxedAp, + MmCpuSyncModeMax +} MM_CPU_SYNC_MODE; + +/// +/// The structure defines the data layout of the MmCpuSyncConfig GUIDed HOB. +/// +typedef struct { + /// + /// 0: Traditional CPU synchronization method is used when processing an SMI. + /// 1: Relaxed CPU synchronization method is used when processing an SMI. + /// + MM_CPU_SYNC_MODE RelaxedApMode; + + /// + /// The 1st BSP/AP synchronization timeout value in SMM. + /// The value shall match with the PcdCpuSmmApSyncTimeout. + /// + UINT64 Timeout; + + /// + /// The 2nd BSP/AP synchronization timeout value in SMM. + /// The value shall match with the PcdCpuSmmApSyncTimeout2. + /// + UINT64 Timeout2; +} MM_CPU_SYNC_CONFIG; + +extern EFI_GUID gMmCpuSyncConfigHobGuid; + +#endif diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec index 140500d521..5ae4af3e36 100644 --- a/UefiCpuPkg/UefiCpuPkg.dec +++ b/UefiCpuPkg/UefiCpuPkg.dec @@ -114,6 +114,9 @@ ## Include/Guid/MmProfileData.h gMmProfileDataHobGuid = { 0x26ef081d, 0x19b0, 0x4c42, { 0xa2, 0x57, 0xa7, 0xf5, 0x9f, 0x8b, 0xd0, 0x38 }} + ## Include/Guid/MmCpuSyncConfig.h + gMmCpuSyncConfigHobGuid = { 0x8b90bd26, 0xe4f9, 0x45c2, { 0x92, 0xa2, 0x9e, 0xac, 0xe6, 0x0e, 0x9d, 0xcc }} + [Protocols] ## Include/Protocol/SmmCpuService.h gEfiSmmCpuServiceProtocolGuid = { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}