From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web09.10112.1645186856795209127 for ; Fri, 18 Feb 2022 04:20:58 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=I3VWySWj; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: zhihao.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645186856; x=1676722856; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=lQLWW0Ccg7SgaO+2OsPMNizLTNQeoR3J/l9u4LYSbek=; b=I3VWySWje22DPrTllP21TK5qt3tObYVWnXZlwdRmhFF04fUcV4LdQeYv KSmVtkxkNdHzTxHgav9rMe+ucUd5Q8jYTO4cOmsmvhF22xBz6TUu0LUcI ujV2HinFOmFcYhWWVVgFuVns43lHL5kTYv4IfHgMrXzjJWE4JJDo2oGDD LVniyKbFa94dI/JqlNUvHPUAReNkJy3SuhjlpXlGVOnHO8rZYAup33QB0 Fo3f97W55sOEY+iaxuFX3NvKYI/GPURE4x8JK/k9Lv3AM0G69jbNwBfFx gqM7LS+5R306wR4RS7XQnj7nY8vFAjfWcF21yLJkle9mweBaOhfuNoSla w==; X-IronPort-AV: E=McAfee;i="6200,9189,10261"; a="250871276" X-IronPort-AV: E=Sophos;i="5.88,378,1635231600"; d="scan'208";a="250871276" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Feb 2022 04:20:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,378,1635231600"; d="scan'208";a="546262890" Received: from win_li.ccr.corp.intel.com ([10.239.157.34]) by orsmga008.jf.intel.com with ESMTP; 18 Feb 2022 04:20:54 -0800 From: "Li, Zhihao" To: devel@edk2.groups.io Cc: Eric Dong , Ray Ni , Rahul Kumar , Siyuan Fu Subject: [PATCH v2 1/1] UefiCpuPkg: Extend SMM CPU Service with rendezvous support. Date: Fri, 18 Feb 2022 20:20:52 +0800 Message-Id: <20220218122052.3099-1-zhihao.li@intel.com> X-Mailer: git-send-email 2.26.2.windows.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable REF=EF=BC=9A https://bugzilla.tianocore.org/show_bug.cgi?id=3D3815 This patch define a new Protocol with the new services SmmWaitForAllProcessor(), which can be used by SMI handler to optionally wait for other APs to complete SMM rendezvous in relaxed AP mode. A new library SmmCpuRendezvousLib is provided to abstract the service into library API to simple SMI handler code. Cc: Eric Dong Cc: Ray Ni Cc: Rahul Kumar Cc: Siyuan Fu Signed-off-by: Zhihao Li --- UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c | 95 ++++++= ++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c | 66 ++++++= +++++++- UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 14 ++- UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h | 27 ++++++ UefiCpuPkg/Include/Protocol/SmmCpuService.h | 36 ++++++= +- UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf | 32 +++++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 30 ++++++- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 5 +- UefiCpuPkg/UefiCpuPkg.dec | 5 +- 9 files changed, 300 insertions(+), 10 deletions(-) diff --git a/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c b= /UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c new file mode 100644 index 000000000000..03e507bf6b52 --- /dev/null +++ b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c @@ -0,0 +1,95 @@ +/** @file=0D +SMM CPU Rendezvous library header file.=0D +=0D +Copyright (c) 2021 - 2022, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +=0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +=0D +STATIC EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *mSmmCpuRendezvous =3D NULL;=0D +STATIC VOID *mSmmCpuRendezvousRegistration = =3D NULL;=0D +=0D +/**=0D + Register status code callback function only when Report Status Code prot= ocol=0D + is installed.=0D +=0D + @param Protocol Points to the protocol's unique identifier.=0D + @param Interface Points to the interface instance.=0D + @param Handle The handle on which the interface was installed.=0D +=0D + @retval EFI_SUCCESS Notification runs successfully.=0D +=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +SmmCpuServiceProtocolNotify (=0D + IN CONST EFI_GUID *Protocol,=0D + IN VOID *Interface,=0D + IN EFI_HANDLE Handle=0D + )=0D +{=0D + EFI_STATUS Status;=0D +=0D + Status =3D gMmst->MmLocateProtocol (=0D + &gEdkiiSmmCpuRendezvousProtocolGuid,=0D + NULL,=0D + (VOID **) &mSmmCpuRendezvous=0D + );=0D + ASSERT_EFI_ERROR (Status);=0D +=0D + return EFI_SUCCESS;=0D +}=0D +=0D +/**=0D + This routine wait for all AP processors to arrive in SMM.=0D +=0D + @param BlockingMode Blocking mode or non-blocking mode.=0D +=0D + @retval EFI_SUCCESS All avaiable APs arrived.=0D + @retval EFI_TIMEOUT Wait for all APs until timeout.=0D + @retval Other Fail to register Smm cpu rendezvous servi= ces notify.=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +SmmWaitForAllProcessor (=0D + IN BOOLEAN BlockingMode=0D + )=0D +{=0D + EFI_STATUS Status;=0D +=0D + if (mSmmCpuRendezvousRegistration =3D=3D NULL && mSmmCpuRendezvous =3D= =3D NULL) {=0D + //=0D + // locate Smm cpu rendezvous protocol for the first time execute the f= unction.=0D + //=0D + Status =3D gMmst->MmLocateProtocol (&gEdkiiSmmCpuRendezvousProtocolGui= d, NULL, (VOID **) &mSmmCpuRendezvous);=0D + if (EFI_ERROR (Status)) {=0D + Status =3D gMmst->MmRegisterProtocolNotify (=0D + &gEdkiiSmmCpuRendezvousProtocolGuid,=0D + SmmCpuServiceProtocolNotify,=0D + &mSmmCpuRendezvousRegistration=0D + );=0D + if (EFI_ERROR (Status)) {=0D + return Status;=0D + }=0D + }=0D + }=0D +=0D + if (mSmmCpuRendezvous =3D=3D NULL) {=0D + return EFI_SUCCESS;=0D + }=0D +=0D + Status =3D mSmmCpuRendezvous->WaitForAllProcessor (=0D + mSmmCpuRendezvous,=0D + BlockingMode=0D + );=0D + return Status;=0D +}=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c b/UefiCpuPkg/PiSmmCpuDx= eSmm/CpuService.c index 5d624f8e9ed6..85c3c5c15a26 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c @@ -1,7 +1,7 @@ /** @file=0D Implementation of SMM CPU Services Protocol.=0D =0D -Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.
=0D +Copyright (c) 2011 - 2022, Intel Corporation. All rights reserved.
=0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D =0D **/=0D @@ -20,6 +20,13 @@ EFI_SMM_CPU_SERVICE_PROTOCOL mSmmCpuService =3D { SmmRegisterExceptionHandler=0D };=0D =0D +//=0D +// EDKII SMM CPU Rendezvous Service Protocol instance=0D +//=0D +EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL mEdkiiSmmCpuRendezvousService =3D {=0D + SmmWaitForAllProcessor=0D +};=0D +=0D /**=0D Gets processor information on the requested processor at the instant thi= s call is made.=0D =0D @@ -350,6 +357,7 @@ SmmRegisterExceptionHandler ( @param ImageHandle The firmware allocated handle for the EFI image.=0D =0D @retval EFI_SUCCESS EFI SMM CPU Services Protocol was installed succe= ssfully.=0D + @retval Other Fail to install protocol.=0D **/=0D EFI_STATUS=0D InitializeSmmCpuServices (=0D @@ -364,6 +372,62 @@ InitializeSmmCpuServices ( EFI_NATIVE_INTERFACE,=0D &mSmmCpuService=0D );=0D + if (EFI_ERROR (Status)){=0D + return Status;=0D + }=0D +=0D + Status =3D gSmst->SmmInstallProtocolInterface (=0D + &Handle,=0D + &gEdkiiSmmCpuRendezvousProtocolGuid,=0D + EFI_NATIVE_INTERFACE,=0D + &mEdkiiSmmCpuRendezvousService=0D + );=0D ASSERT_EFI_ERROR (Status);=0D return Status;=0D }=0D +=0D +/**=0D + Wait for all processors enterring SMM until all CPUs are already synchro= nized or not.=0D +=0D + If BlockingMode is False, timeout value is zero.=0D +=0D + @param This A pointer to the EDKII_SMM_CPU_RENDEZVOUS= _PROTOCOL instance.=0D + @param BlockingMode Blocking mode or non-blocking mode.=0D +=0D + @retval EFI_SUCCESS All avaiable APs arrived.=0D + @retval EFI_TIMEOUT Wait for all APs until timeout.=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +SmmWaitForAllProcessor (=0D + IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This,=0D + IN BOOLEAN BlockingMode=0D + )=0D +{=0D + EFI_STATUS Status;=0D +=0D + //=0D + // Return success immediately if all CPUs are already synchronized.=0D + //=0D + if (mSmmMpSyncData->AllApArrivedWithException) {=0D + Status =3D EFI_SUCCESS;=0D + goto ON_EXIT;=0D + }=0D +=0D + if (!BlockingMode) {=0D + Status =3D EFI_TIMEOUT;=0D + goto ON_EXIT;=0D + }=0D +=0D + //=0D + // There are some APs outside SMM, Wait for all avaiable APs to arrive.= =0D + //=0D + SmmWaitForApArrival (BlockingMode);=0D + Status =3D mSmmMpSyncData->AllApArrivedWithException ? EFI_SUCCESS : EFI= _TIMEOUT;=0D +=0D +ON_EXIT:=0D + if (!mSmmMpSyncData->AllApArrivedWithException){=0D + DEBUG ((DEBUG_INFO, "EdkiiSmmWaitForAllApArrival: Timeout to wait all = APs arrival\n"));=0D + }=0D + return Status;=0D +}=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxe= Smm/MpService.c index 882dee4fe246..4051a9dba179 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c @@ -1,7 +1,7 @@ /** @file=0D SMM MP service implementation=0D =0D -Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
=0D +Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.
=0D Copyright (c) 2017, AMD Incorporated. All rights reserved.
=0D =0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D @@ -261,7 +261,7 @@ IsLmceSignaled ( **/=0D VOID=0D SmmWaitForApArrival (=0D - VOID=0D + IN BOOLEAN BlockingMode=0D )=0D {=0D UINT64 Timer;=0D @@ -271,6 +271,13 @@ SmmWaitForApArrival ( =0D ASSERT (*mSmmMpSyncData->Counter <=3D mNumberOfCpus);=0D =0D + //=0D + // if block is False, do not wait and return immediately.=0D + //=0D + if (!BlockingMode){=0D + return;=0D + }=0D +=0D LmceEn =3D FALSE;=0D LmceSignal =3D FALSE;=0D if (mMachineCheckSupported) {=0D @@ -511,7 +518,7 @@ BSPHandler ( //=0D // Wait for APs to arrive=0D //=0D - SmmWaitForApArrival ();=0D + SmmWaitForApArrival (TRUE);=0D =0D //=0D // Lock the counter down and retrieve the number of APs=0D @@ -1886,6 +1893,7 @@ InitializeMpSyncData ( *mSmmMpSyncData->Counter =3D 0;=0D *mSmmMpSyncData->InsideSmm =3D FALSE;=0D *mSmmMpSyncData->AllCpusInSync =3D FALSE;=0D + mSmmMpSyncData->AllApArrivedWithException =3D FALSE;=0D =0D for (CpuIndex =3D 0; CpuIndex < gSmmCpuPrivate->SmmCoreEntryContext.Nu= mberOfCpus; CpuIndex++) {=0D mSmmMpSyncData->CpuData[CpuIndex].Busy =3D=0D diff --git a/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h b/UefiCpuPkg/= Include/Library/SmmCpuRendezvousLib.h new file mode 100644 index 000000000000..6f90b3146445 --- /dev/null +++ b/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h @@ -0,0 +1,27 @@ +/** @file=0D +SMM CPU Rendezvous library header file.=0D +=0D +Copyright (c) 2021 - 2022, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#ifndef _SMM_CPU_RENDEZVOUS_H_=0D +#define _SMM_CPU_RENDEZVOUS_H_=0D +=0D +/**=0D + This routine wait for all AP processors to arrive in SMM.=0D +=0D + @param BlockingMode Blocking mode or non-blocking mode.=0D +=0D + @retval EFI_SUCCESS All processors checked in to SMM.=0D + @retval EFI_TIMEOUT Wait for all APs until timeout.=0D +=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +SmmWaitForAllProcessor (=0D + IN BOOLEAN BlockingMode=0D + );=0D +=0D +#endif=0D diff --git a/UefiCpuPkg/Include/Protocol/SmmCpuService.h b/UefiCpuPkg/Inclu= de/Protocol/SmmCpuService.h index 952767afce75..95376e87e933 100644 --- a/UefiCpuPkg/Include/Protocol/SmmCpuService.h +++ b/UefiCpuPkg/Include/Protocol/SmmCpuService.h @@ -1,7 +1,7 @@ /** @file=0D SMM CPU Service protocol definition.=0D =0D -Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.
=0D +Copyright (c) 2013 - 2022, Intel Corporation. All rights reserved.
=0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D =0D **/=0D @@ -200,4 +200,38 @@ struct _EFI_SMM_CPU_SERVICE_PROTOCOL { =0D extern EFI_GUID gEfiSmmCpuServiceProtocolGuid;=0D =0D +//=0D +// EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL provide SMM CPU=0D +// rendezvous service support.=0D +//=0D +#define EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL_GUID \=0D + { \=0D + 0xaa00d50b, 0x4911, 0x428f, {0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2,= 0x4c} \=0D + }=0D +=0D +typedef struct _EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL EDKII_SMM_CPU_RENDEZVOUS= _PROTOCOL;=0D +=0D +/**=0D + Wait for all APs to arrive SMM mode in given timeout constraint.=0D +=0D + @param This A pointer to the EDKII_SMM_CPU_RENDEZVOUS_= PROTOCOL instance.=0D + @param BlockingMode Block or non-block mode.=0D +=0D + @retval EFI_SUCCESS All APs have arrived SMM mode except SMI d= isabled APs.=0D + @retval EFI_TIMEOUT There are APs not in SMM mode in given tim= eout constraint.=0D +=0D +**/=0D +typedef=0D +EFI_STATUS=0D +(EFIAPI *EDKII_WAIT_FOR_ALL_PROCESSOR) (=0D + IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This,=0D + IN BOOLEAN BlockingMode=0D + );=0D +=0D +struct _EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL {=0D + EDKII_WAIT_FOR_ALL_PROCESSOR WaitForAllProcessor;=0D +};=0D +=0D +extern EFI_GUID gEdkiiSmmCpuRendezvousProtocolGuid;=0D +=0D #endif=0D diff --git a/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf= b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf new file mode 100644 index 000000000000..f4b9afb05f15 --- /dev/null +++ b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf @@ -0,0 +1,32 @@ +## @file=0D +# Component description file for CPU SMM Rendezvous check library=0D +#=0D +# Copyright (c) 2021 - 2022, Intel Corporation. All rights reserved.
=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D SmmCpuRendezvousLib=0D + FILE_GUID =3D 1509Bb36-9Ba4-438B-B195-Ac5914Db14E2= =0D + MODULE_TYPE =3D DXE_SMM_DRIVER=0D + LIBRARY_CLASS =3D SmmCpuRendezvousLib|MM_STANDALONE DXE= _SMM_DRIVER=0D +=0D +[Sources]=0D + SmmCpuRendezvousLib.c=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + UefiCpuPkg/UefiCpuPkg.dec=0D +=0D +[LibraryClasses]=0D + BaseLib=0D + DebugLib=0D + MmServicesTableLib=0D +=0D +[Pcd]=0D + gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout ## CONS= UMES=0D +=0D +[Protocols]=0D + gEdkiiSmmCpuRendezvousProtocolGuid=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h b/UefiCpuPkg/PiSmmC= puDxeSmm/PiSmmCpuDxeSmm.h index 26d07c5b5ea0..96f98cf85c25 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h @@ -1,7 +1,7 @@ /** @file=0D Agent Module to load other modules to deploy SMM Entry Vector for X86 CPU.= =0D =0D -Copyright (c) 2009 - 2020, Intel Corporation. All rights reserved.
=0D +Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.
=0D Copyright (c) 2017, AMD Incorporated. All rights reserved.
=0D =0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D @@ -428,6 +428,7 @@ typedef struct { volatile SMM_CPU_SYNC_MODE EffectiveSyncMode;=0D volatile BOOLEAN SwitchBsp;=0D volatile BOOLEAN *CandidateBsp;=0D + volatile BOOLEAN AllApArrivedWithException;=0D EFI_AP_PROCEDURE StartupProcedure;=0D VOID *StartupProcArgs;=0D } SMM_DISPATCHER_MP_SYNC_DATA;=0D @@ -1488,4 +1489,31 @@ IsRestrictedMemoryAccess ( VOID=0D );=0D =0D +/**=0D + Choose blocking or non-blocking mode to Wait for all APs=0D +=0D + @param This A pointer to the EDKII_SMM_CPU_RENDEZVOUS_= PROTOCOL instance.=0D + @param BlockingMode Blocking or non-blocking mode=0D +=0D + @retval EFI_SUCCESS All APs have arrived SMM mode except SMI d= isabled APs.=0D + @retval EFI_TIMEOUT There are APs not in SMM mode in given tim= eout constraint.=0D +=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +SmmWaitForAllProcessor (=0D + IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This,=0D + IN BOOLEAN BlockingMode=0D + );=0D +=0D +/**=0D + Choose blocking or non-blocking mode to wait for all APs. True for Block= ing and false for not.=0D + Insure when this function returns, no AP will execute normal mode code b= efore entering SMM, except SMI disabled APs.=0D +=0D +**/=0D +VOID=0D +SmmWaitForApArrival (=0D + IN BOOLEAN BlockingMode=0D + );=0D +=0D #endif=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf b/UefiCpuPkg/PiSm= mCpuDxeSmm/PiSmmCpuDxeSmm.inf index 0e88071c7079..deef00f9c6e9 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf @@ -4,7 +4,7 @@ # This SMM driver performs SMM initialization, deploy SMM Entry Vector,=0D # provides CPU specific services in SMM.=0D #=0D -# Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
=0D +# Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.
=0D # Copyright (c) 2017, AMD Incorporated. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D @@ -107,7 +107,8 @@ gEfiSmmReadyToLockProtocolGuid ## NOTIFY=0D gEfiSmmCpuServiceProtocolGuid ## PRODUCES=0D gEdkiiSmmMemoryAttributeProtocolGuid ## PRODUCES=0D - gEfiMmMpProtocolGuid ## PRODUCES=0D + gEfiMmMpProtocolGuid ## PRODUCES=0D + gEdkiiSmmCpuRendezvousProtocolGuid ## PRODUCES=0D =0D [Guids]=0D gEfiAcpiVariableGuid ## SOMETIMES_CONSUMES ## HOB # = it is used for S3 boot.=0D diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec index 7de66fde674c..1951eb294c6c 100644 --- a/UefiCpuPkg/UefiCpuPkg.dec +++ b/UefiCpuPkg/UefiCpuPkg.dec @@ -1,7 +1,7 @@ ## @file UefiCpuPkg.dec=0D # This Package provides UEFI compatible CPU modules and libraries.=0D #=0D -# Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.
=0D +# Copyright (c) 2007 - 2022, Intel Corporation. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D #=0D @@ -77,7 +77,8 @@ =0D [Protocols]=0D ## Include/Protocol/SmmCpuService.h=0D - gEfiSmmCpuServiceProtocolGuid =3D { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94,= 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}=0D + gEfiSmmCpuServiceProtocolGuid =3D { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94= , 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}=0D + gEdkiiSmmCpuRendezvousProtocolGuid =3D { 0xaa00d50b, 0x4911, 0x428f, { 0= xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2, 0x4c }}=0D =0D ## Include/Protocol/SmMonitorInit.h=0D gEfiSmMonitorInitProtocolGuid =3D { 0x228f344d, 0xb3de, 0x43bb, { 0xa4,= 0xd7, 0xea, 0x20, 0xb, 0x1b, 0x14, 0x82 }}=0D --=20 2.26.2.windows.1