UefiCpuPkg/PiSmmCpuDxeSmm: Impl GetSmmCpuSyncConfigData for MM
MM CPU can not use the dynamic PCD (PcdCpuSmmSyncMode & PcdCpuSmmApSyncTimeout & PcdCpuSmmApSyncTimeout2), so, it consumes the gMmCpuSyncConfigHobGuid for RelaxedApMode & Timeout & Timeout2. Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Dun Tan <dun.tan@intel.com> Cc: Hongbin1 Zhang <hongbin1.zhang@intel.com> Cc: Wei6 Xu <wei6.xu@intel.com> Cc: Yuanhao Xie <yuanhao.xie@intel.com>
This commit is contained in:
parent
1f22b96b11
commit
614d6c91bf
|
@ -30,6 +30,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
|||
#include <Guid/MpInformation2.h>
|
||||
#include <Guid/MmProfileData.h>
|
||||
#include <Guid/MmAcpiS3Enable.h>
|
||||
#include <Guid/MmCpuSyncConfig.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
|
|
|
@ -9,6 +9,51 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
|||
|
||||
#include "PiSmmCpuCommon.h"
|
||||
|
||||
/**
|
||||
Get SmmCpuSyncConfig data: RelaxedMode, SyncTimeout, SyncTimeout2.
|
||||
|
||||
@param[in,out] RelaxedMode It indicates if Relaxed CPU synchronization method or
|
||||
traditional CPU synchronization method is used when processing an SMI.
|
||||
@param[in,out] SyncTimeout It indicates the 1st BSP/AP synchronization timeout value in SMM.
|
||||
@param[in,out] SyncTimeout2 It indicates the 2nd BSP/AP synchronization timeout value in SMM.
|
||||
|
||||
**/
|
||||
VOID
|
||||
GetSmmCpuSyncConfigData (
|
||||
IN OUT BOOLEAN *RelaxedMode, OPTIONAL
|
||||
IN OUT UINT64 *SyncTimeout, OPTIONAL
|
||||
IN OUT UINT64 *SyncTimeout2 OPTIONAL
|
||||
)
|
||||
{
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
MM_CPU_SYNC_CONFIG *MmCpuSyncConfigHob;
|
||||
|
||||
MmCpuSyncConfigHob = NULL;
|
||||
|
||||
//
|
||||
// Get MM_CPU_SYNC_CONFIG for Standalone MM init.
|
||||
//
|
||||
GuidHob = GetFirstGuidHob (&gMmCpuSyncConfigHobGuid);
|
||||
ASSERT (GuidHob != NULL);
|
||||
if (GuidHob != NULL) {
|
||||
MmCpuSyncConfigHob = GET_GUID_HOB_DATA (GuidHob);
|
||||
}
|
||||
|
||||
if (MmCpuSyncConfigHob != NULL) {
|
||||
if (RelaxedMode != NULL) {
|
||||
*RelaxedMode = ((MmCpuSyncConfigHob->RelaxedApMode == MmCpuSyncModeRelaxedAp) ? TRUE : FALSE);
|
||||
}
|
||||
|
||||
if (SyncTimeout != NULL) {
|
||||
*SyncTimeout = MmCpuSyncConfigHob->Timeout;
|
||||
}
|
||||
|
||||
if (SyncTimeout2 != NULL) {
|
||||
*SyncTimeout2 = MmCpuSyncConfigHob->Timeout2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Get ACPI S3 enable flag.
|
||||
|
||||
|
|
Loading…
Reference in New Issue