Send patch v4 following Siyuan comments. > -----Original Message----- > From: Fu, Siyuan <siyuan...@intel.com> > Sent: Wednesday, February 23, 2022 6:20 PM > To: devel@edk2.groups.io; Li, Zhihao <zhihao...@intel.com> > Cc: Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; Kumar, > Rahul1 <rahul1.ku...@intel.com> > Subject: RE: [edk2-devel] [PATCH v2 1/1] UefiCpuPkg: Extend SMM CPU > Service with rendezvous support. > > Hi, Zhihao > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Li, > > Zhihao > > Sent: 2022年2月23日 14:42 > > To: devel@edk2.groups.io > > Cc: Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; > > Kumar, > > Rahul1 <rahul1.ku...@intel.com>; Fu, Siyuan <siyuan...@intel.com> > > Subject: [edk2-devel] [PATCH v2 1/1] UefiCpuPkg: Extend SMM CPU > > Service with rendezvous support. > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3815 > > > > 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. > > > > Patch_v3 modified to pass CI test. (1)Add SmmCpuRendezvousLib.inf into > > UefiCpuPkg.dsc <LibraryClasses>/<Component> (2)Add > > SmmCpuRendezvousLib.h in UefiCpuPkg.dec [Libraryclasses.IA32, > > Libraryclasses.x64] (3) Some UncrustifyCheck modifications. > > > > Cc: Eric Dong <eric.d...@intel.com> > > Cc: Ray Ni <ray...@intel.com> > > Cc: Rahul Kumar <rahul1.ku...@intel.com> > > Cc: Siyuan Fu <siyuan...@intel.com> > > > > Signed-off-by: Zhihao Li <zhihao...@intel.com> > > --- > > UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c | > 98 > > ++++++++++++++++++++ > > UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c | 68 > > +++++++++++++- > > UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 15 ++- > > UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h | 27 ++++++ > > UefiCpuPkg/Include/Protocol/SmmCpuService.h | 36 ++++++- > > UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf | > 35 > > +++++++ > > UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 30 > +++++- > > UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 5 +- > > UefiCpuPkg/UefiCpuPkg.dec | 8 +- > > UefiCpuPkg/UefiCpuPkg.dsc | 2 + > > 10 files changed, 314 insertions(+), 10 deletions(-) > > > > diff --git > > a/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c > > b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c > > new file mode 100644 > > index 000000000000..a53a5a8f301a > > --- /dev/null > > +++ > b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c > > @@ -0,0 +1,98 @@ > > +/** @file > > > > + SMM CPU Rendezvous sevice implement. > > > > + > > > > + Copyright (c) 2021 - 2022, Intel Corporation. All rights > > + reserved.<BR> > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include <Base.h> > > > > +#include <Uefi.h> > > > > +#include <Library/BaseLib.h> > > > > +#include <Library/DebugLib.h> > > > > +#include <Library/MmServicesTableLib.h> > > > > +#include <Protocol/SmmCpuService.h> > > > > +#include <Library/SmmCpuRendezvousLib.h> > > > > + > > > > +STATIC EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL > *mSmmCpuRendezvous = > > NULL; > > > > +STATIC VOID *mRegistration = NULL; > > > > + > > > > +/** > > > > + Register status code callback function only when Report Status Code > > + protocol > > > > + is installed. > > > > + > > > > + @param[in] Protocol Points to the protocol's unique identifier. > > > > + @param[in] Interface Points to the interface instance. > > > > + @param[in] Handle The handle on which the interface was installed. > > > > + > > > > + @retval EFI_SUCCESS Notification runs successfully. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SmmCpuRendezvousProtocolNotify ( > > > > + IN CONST EFI_GUID *Protocol, > > > > + IN VOID *Interface, > > > > + IN EFI_HANDLE Handle > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + > > > > + Status = gMmst->MmLocateProtocol ( > > > > + &gEdkiiSmmCpuRendezvousProtocolGuid, > > > > + NULL, > > > > + (VOID **)&mSmmCpuRendezvous > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > + > > > > +/** > > > > + This routine wait for all AP processors to arrive in SMM. > > > > + > > > > + @param[in] BlockingMode Blocking mode or non-blocking mode. > > > > + > > > > + @retval EFI_SUCCESS All avaiable APs arrived. > > > > + @retval EFI_TIMEOUT Wait for all APs until timeout. > > > > + @retval OTHER Fail to register SMM CPU Rendezvous service > > Protocol. > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SmmWaitForAllProcessor ( > > > > + IN BOOLEAN BlockingMode > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + > > > > + if ((mRegistration == NULL) && (mSmmCpuRendezvous == NULL)) { > > > > + // > > > > + // Locate SMM cpu rendezvous protocol for the first time execute > > + the > > function. > > > > + // > > > > + Status = gMmst->MmLocateProtocol ( > > > > + &gEdkiiSmmCpuRendezvousProtocolGuid, > > > > + NULL, > > > > + (VOID **)&mSmmCpuRendezvous > > > > + ); > > > > + if (EFI_ERROR (Status)) { > > > > + Status = gMmst->MmRegisterProtocolNotify ( > > > > + &gEdkiiSmmCpuRendezvousProtocolGuid, > > > > + SmmCpuRendezvousProtocolNotify, > > > > + &mRegistration > > > > + ); > > > > + if (EFI_ERROR (Status)) { > > > > + return Status; > > > > + } > > > > + } > > > > + } > > > > + > > > > + if (mSmmCpuRendezvous == NULL) { > > > > + return EFI_SUCCESS; > > > > + } > > > > + > > > > + Status = mSmmCpuRendezvous->WaitForAllProcessor ( > > > > + mSmmCpuRendezvous, > > > > + BlockingMode > > > > + ); > > > > + return Status; > > > > +} > > > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c > > b/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c > > index 5d624f8e9ed6..fceb663fb74f 100644 > > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c > > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > Implementation of SMM CPU Services Protocol. > > > > > > > > -Copyright (c) 2011 - 2015, Intel Corporation. All rights > > reserved.<BR> > > > > +Copyright (c) 2011 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > **/ > > > > @@ -20,6 +20,13 @@ EFI_SMM_CPU_SERVICE_PROTOCOL > mSmmCpuService = { > > SmmRegisterExceptionHandler > > > > }; > > > > > > > > +// > > > > +// EDKII SMM CPU Rendezvous Service Protocol instance > > > > +// > > > > +EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL > mSmmCpuRendezvousService = { > > > > + SmmWaitForAllProcessor > > > > +}; > > > > + > > > > /** > > > > Gets processor information on the requested processor at the > > instant this call is made. > > > > > > > > @@ -350,6 +357,7 @@ SmmRegisterExceptionHandler ( > > @param ImageHandle The firmware allocated handle for the EFI image. > > > > > > > > @retval EFI_SUCCESS EFI SMM CPU Services Protocol was installed > > successfully. > > > > + @retval OTHER Fail to install Protocol. > > > > **/ > > > > EFI_STATUS > > > > InitializeSmmCpuServices ( > > > > @@ -364,6 +372,64 @@ InitializeSmmCpuServices ( > > EFI_NATIVE_INTERFACE, > > > > &mSmmCpuService > > > > ); > > > > + if (EFI_ERROR (Status)) { > > > > + return Status; > > > > + } > > > > + > > > > + Status = gSmst->SmmInstallProtocolInterface ( > > > > + &Handle, > > > > + &gEdkiiSmmCpuRendezvousProtocolGuid, > > > > + EFI_NATIVE_INTERFACE, > > > > + &mSmmCpuRendezvousService > > > > + ); > > > > ASSERT_EFI_ERROR (Status); > > > > return Status; > > > > } > > > > + > > > > +/** > > > > + Wait for all processors enterring SMM until all CPUs are already > > + synchronized > > or not. > > > > + > > > > + If BlockingMode is False, timeout value is zero. > > > > + > > > > + @param This A pointer to the > > EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance. > > > > + @param BlockingMode Blocking mode or non-blocking mode. > > > > + > > > > + @retval EFI_SUCCESS All avaiable APs arrived. > > > > + @retval EFI_TIMEOUT Wait for all APs until timeout. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SmmWaitForAllProcessor ( > > > > + IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This, > > > > + IN BOOLEAN BlockingMode > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + > > > > + // > > > > + // Return success immediately if all CPUs are already synchronized. > > > > + // > > > > + if (mSmmMpSyncData->AllApArrivedWithException) { > > > > + Status = EFI_SUCCESS; > > > > + goto ON_EXIT; > > > > + } > > > > + > > > > + if (!BlockingMode) { > > > > + Status = EFI_TIMEOUT; > > > > + goto ON_EXIT; > > > > + } > > > > + > > > > + // > > > > + // There are some APs outside SMM, Wait for all avaiable APs to arrive. > > > > + // > > > > + SmmWaitForApArrival (BlockingMode); > > > > + Status = mSmmMpSyncData->AllApArrivedWithException ? > EFI_SUCCESS : > > EFI_TIMEOUT; > > > > + > > > > +ON_EXIT: > > > > + if (!mSmmMpSyncData->AllApArrivedWithException) { > > > > + DEBUG ((DEBUG_INFO, "EdkiiSmmWaitForAllApArrival: Timeout to wait > > + all > > APs arrival\n")); > > > > + } > > > > + > > > > + return Status; > > > > +} > > > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > > b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > > index 882dee4fe246..6a8693dae989 100644 > > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > SMM MP service implementation > > > > > > > > -Copyright (c) 2009 - 2021, Intel Corporation. All rights > > reserved.<BR> > > > > +Copyright (c) 2009 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR> > > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @@ -261,7 +261,7 @@ IsLmceSignaled ( > > **/ > > > > VOID > > > > SmmWaitForApArrival ( > > > > - VOID > > > > + IN BOOLEAN BlockingMode > Do we really need to add the parameter BlockingMode for this function? I > found it's set to FALSE in all the code path. > > Thanks. > > > > > ) > > > > { > > > > UINT64 Timer; > > > > @@ -271,6 +271,13 @@ SmmWaitForApArrival ( > > > > > > ASSERT (*mSmmMpSyncData->Counter <= mNumberOfCpus); > > > > > > > > + // > > > > + // If block is False, do not wait and return immediately. > > > > + // > > > > + if (!BlockingMode) { > > > > + return; > > > > + } > > > > + > > > > LmceEn = FALSE; > > > > LmceSignal = FALSE; > > > > if (mMachineCheckSupported) { > > > > @@ -511,7 +518,7 @@ BSPHandler ( > > // > > > > // Wait for APs to arrive > > > > // > > > > - SmmWaitForApArrival (); > > > > + SmmWaitForApArrival (TRUE); > > > > > > > > // > > > > // Lock the counter down and retrieve the number of APs > > > > @@ -1887,6 +1894,8 @@ InitializeMpSyncData ( > > *mSmmMpSyncData->InsideSmm = FALSE; > > > > *mSmmMpSyncData->AllCpusInSync = FALSE; > > > > > > > > + mSmmMpSyncData->AllApArrivedWithException = FALSE; > > > > + > > > > for (CpuIndex = 0; CpuIndex < gSmmCpuPrivate- > > >SmmCoreEntryContext.NumberOfCpus; CpuIndex++) { > > > > mSmmMpSyncData->CpuData[CpuIndex].Busy = > > > > (SPIN_LOCK *)((UINTN)mSmmCpuSemaphores.SemaphoreCpu.Busy > + > > mSemaphoreSize * CpuIndex); > > > > diff --git a/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h > > b/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h > > new file mode 100644 > > index 000000000000..d0a987dc7d0a > > --- /dev/null > > +++ b/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h > > @@ -0,0 +1,27 @@ > > +/** @file > > > > + SMM CPU Rendezvous library header file. > > > > + > > > > + Copyright (c) 2021 - 2022, Intel Corporation. All rights > > + reserved.<BR> > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#ifndef SMM_CPU_RENDEZVOUS_H_ > > > > +#define SMM_CPU_RENDEZVOUS_H_ > > > > + > > > > +/** > > > > + This routine wait for all AP processors to arrive in SMM. > > > > + > > > > + @param[in] BlockingMode Blocking mode or non-blocking mode. > > > > + > > > > + @retval EFI_SUCCESS All processors checked in to SMM. > > > > + @retval EFI_TIMEOUT Wait for all APs until timeout. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SmmWaitForAllProcessor ( > > > > + IN BOOLEAN BlockingMode > > > > + ); > > > > + > > > > +#endif > > > > diff --git a/UefiCpuPkg/Include/Protocol/SmmCpuService.h > > b/UefiCpuPkg/Include/Protocol/SmmCpuService.h > > index 952767afce75..3d93d243409c 100644 > > --- a/UefiCpuPkg/Include/Protocol/SmmCpuService.h > > +++ b/UefiCpuPkg/Include/Protocol/SmmCpuService.h > > @@ -1,7 +1,7 @@ > > /** @file > > > > SMM CPU Service protocol definition. > > > > > > > > -Copyright (c) 2013 - 2015, Intel Corporation. All rights > > reserved.<BR> > > > > +Copyright (c) 2013 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > **/ > > > > @@ -200,4 +200,38 @@ struct _EFI_SMM_CPU_SERVICE_PROTOCOL { > > > > > > extern EFI_GUID gEfiSmmCpuServiceProtocolGuid; > > > > > > > > +// > > > > +// EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL provide SMM CPU > > > > +// rendezvous service support. > > > > +// > > > > +#define EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL_GUID \ > > > > + { \ > > > > + 0xaa00d50b, 0x4911, 0x428f, { 0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, > > + 0xe2, > > 0x4c } \ > > > > + } > > > > + > > > > +typedef struct _EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL > > EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL; > > > > + > > > > +/** > > > > + Wait for all APs to arrive SMM mode in given timeout constraint. > > > > + > > > > + @param[in] This A pointer to the > > EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance. > > > > + @param[in] BlockingMode Block or non-block mode. > > > > + > > > > + @retval EFI_SUCCESS All APs have arrived SMM mode except > > SMI > > disabled APs. > > > > + @retval EFI_TIMEOUT There are APs not in SMM mode in given > > timeout constraint. > > > > + > > > > +**/ > > > > +typedef > > > > +EFI_STATUS > > > > +(EFIAPI *EDKII_WAIT_FOR_ALL_PROCESSOR)( > > > > + IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This, > > > > + IN BOOLEAN BlockingMode > > > > + ); > > > > + > > > > +struct _EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL { > > > > + EDKII_WAIT_FOR_ALL_PROCESSOR WaitForAllProcessor; > > > > +}; > > > > + > > > > +extern EFI_GUID gEdkiiSmmCpuRendezvousProtocolGuid; > > > > + > > > > #endif > > > > diff --git > > a/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf > > b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf > > new file mode 100644 > > index 000000000000..76896a5b0e1a > > --- /dev/null > > +++ > b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf > > @@ -0,0 +1,35 @@ > > +## @file > > > > +# SMM CPU Rendezvous service lib. > > > > +# > > > > +# This is SMM CPU rendezvous service lib that wait for all > > > > +# APs to enter SMM mode. > > > > +# > > > > +# Copyright (c) 2021 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION = 0x00010005 > > > > + BASE_NAME = SmmCpuRendezvousLib > > > > + FILE_GUID = 1509Bb36-9Ba4-438B-B195-Ac5914Db14E2 > > > > + MODULE_TYPE = DXE_SMM_DRIVER > > > > + LIBRARY_CLASS = SmmCpuRendezvousLib|MM_STANDALONE > > DXE_SMM_DRIVER > > > > + > > > > +[Sources] > > > > + SmmCpuRendezvousLib.c > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + UefiCpuPkg/UefiCpuPkg.dec > > > > + > > > > +[LibraryClasses] > > > > + BaseLib > > > > + DebugLib > > > > + MmServicesTableLib > > > > + > > > > +[Pcd] > > > > + gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout ## > > CONSUMES > > > > + > > > > +[Protocols] > > > > + gEdkiiSmmCpuRendezvousProtocolGuid > > > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h > > b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h > > index 26d07c5b5ea0..1960bb4015ef 100644 > > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h > > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h > > @@ -1,7 +1,7 @@ > > /** @file > > > > Agent Module to load other modules to deploy SMM Entry Vector for X86 > CPU. > > > > > > > > -Copyright (c) 2009 - 2020, Intel Corporation. All rights > > reserved.<BR> > > > > +Copyright (c) 2009 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR> > > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @@ -428,6 +428,7 @@ typedef struct { > > volatile SMM_CPU_SYNC_MODE EffectiveSyncMode; > > > > volatile BOOLEAN SwitchBsp; > > > > volatile BOOLEAN *CandidateBsp; > > > > + volatile BOOLEAN AllApArrivedWithException; > > > > EFI_AP_PROCEDURE StartupProcedure; > > > > VOID *StartupProcArgs; > > > > } SMM_DISPATCHER_MP_SYNC_DATA; > > > > @@ -1488,4 +1489,31 @@ IsRestrictedMemoryAccess ( > > VOID > > > > ); > > > > > > > > +/** > > > > + Choose blocking or non-blocking mode to Wait for all APs. > > > > + > > > > + @param[in] This A pointer to the > > EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance. > > > > + @param[in] BlockingMode Blocking or non-blocking mode. > > > > + > > > > + @retval EFI_SUCCESS All APs have arrived SMM mode except > > SMI > > disabled APs. > > > > + @retval EFI_TIMEOUT There are APs not in SMM mode in given > > timeout constraint. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SmmWaitForAllProcessor ( > > > > + IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This, > > > > + IN BOOLEAN BlockingMode > > > > + ); > > > > + > > > > +/** > > > > + Choose blocking or non-blocking mode to wait for all APs. True for > > + Blocking > > and false for not. > > > > + Insure when this function returns, no AP will execute normal mode > > + code > > before entering SMM, except SMI disabled APs. > > > > + > > > > +**/ > > > > +VOID > > > > +SmmWaitForApArrival ( > > > > + IN BOOLEAN BlockingMode > > > > + ); > > > > + > > > > #endif > > > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > > b/UefiCpuPkg/PiSmmCpuDxeSmm/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, > > > > # provides CPU specific services in SMM. > > > > # > > > > -# Copyright (c) 2009 - 2021, Intel Corporation. All rights > > reserved.<BR> > > > > +# Copyright (c) 2009 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR> > > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @@ -107,7 +107,8 @@ > > gEfiSmmReadyToLockProtocolGuid ## NOTIFY > > > > gEfiSmmCpuServiceProtocolGuid ## PRODUCES > > > > gEdkiiSmmMemoryAttributeProtocolGuid ## PRODUCES > > > > - gEfiMmMpProtocolGuid ## PRODUCES > > > > + gEfiMmMpProtocolGuid ## PRODUCES > > > > + gEdkiiSmmCpuRendezvousProtocolGuid ## PRODUCES > > > > > > > > [Guids] > > > > gEfiAcpiVariableGuid ## SOMETIMES_CONSUMES ## HOB # > > it is > > used for S3 boot. > > > > diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec > > index 7de66fde674c..525cde463435 100644 > > --- a/UefiCpuPkg/UefiCpuPkg.dec > > +++ b/UefiCpuPkg/UefiCpuPkg.dec > > @@ -1,7 +1,7 @@ > > ## @file UefiCpuPkg.dec > > > > # This Package provides UEFI compatible CPU modules and libraries. > > > > # > > > > -# Copyright (c) 2007 - 2021, Intel Corporation. All rights > > reserved.<BR> > > > > +# Copyright (c) 2007 - 2022, Intel Corporation. All rights > > +reserved.<BR> > > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -62,6 +62,9 @@ > > ## @libraryclass Provides function for loading microcode. > > > > MicrocodeLib|Include/Library/MicrocodeLib.h > > > > > > > > + ## @libraryclass Provides function for SMM CPU Rendezvous Library. > > > > + SmmCpuRendezvousLib|Include/Library/SmmCpuRendezvousLib.h > > > > + > > > > [Guids] > > > > gUefiCpuPkgTokenSpaceGuid = { 0xac05bf33, 0x995a, 0x4ed4, { 0xaa, > 0xb8, > > 0xef, 0x7a, 0xe8, 0xf, 0x5c, 0xb0 }} > > > > gMsegSmramGuid = { 0x5802bce4, 0xeeee, 0x4e33, { 0xa1, > > 0x30, > > 0xeb, 0xad, 0x27, 0xf0, 0xe4, 0x39 }} > > > > @@ -77,7 +80,8 @@ > > > > > > [Protocols] > > > > ## Include/Protocol/SmmCpuService.h > > > > - gEfiSmmCpuServiceProtocolGuid = { 0x1d202cab, 0xc8ab, 0x4d5c, { > > 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }} > > > > + gEfiSmmCpuServiceProtocolGuid = { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, > > 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }} > > > > + gEdkiiSmmCpuRendezvousProtocolGuid = { 0xaa00d50b, 0x4911, 0x428f, > > { 0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2, 0x4c }} > > > > > > > > ## Include/Protocol/SmMonitorInit.h > > > > gEfiSmMonitorInitProtocolGuid = { 0x228f344d, 0xb3de, 0x43bb, { > > 0xa4, 0xd7, 0xea, 0x20, 0xb, 0x1b, 0x14, 0x82 }} > > > > diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc > > index d1d61dd6a03b..a0bbde9985d3 100644 > > --- a/UefiCpuPkg/UefiCpuPkg.dsc > > +++ b/UefiCpuPkg/UefiCpuPkg.dsc > > @@ -61,6 +61,7 @@ > > > > > TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/Tp > mM > > easurementLibNull.inf > > > > VmgExitLib|UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf > > > > MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf > > > > + > > > SmmCpuRendezvousLib|UefiCpuPkg/Library/SmmCpuRendezvousLib/Smm > CpuR > > endezvousLib.inf > > > > > > > > [LibraryClasses.common.SEC] > > > > > > PlatformSecLib|UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNul > > l.inf > > > > @@ -173,6 +174,7 @@ > > } > > > > UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf > > > > UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf > > > > + UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf > > > > > > > > [BuildOptions] > > > > *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES > > > > -- > > 2.26.2.windows.1 > > > > > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#86906): https://edk2.groups.io/g/devel/message/86906 Mute This Topic: https://groups.io/mt/89335979/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-