]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg: Extend SMM CPU Service with rendezvous support.
authorLi, Zhihao <zhihao.li@intel.com>
Tue, 1 Mar 2022 11:22:19 +0000 (19:22 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 4 Mar 2022 05:44:42 +0000 (05:44 +0000)
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.

Cc: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Siyuan Fu <siyuan.fu@intel.com>
Cc: Zhihao Li <zhihao.li@intel.com>
Signed-off-by: Zhihao Li <zhihao.li@intel.com>
UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h [new file with mode: 0644]
UefiCpuPkg/Include/Protocol/SmmCpuService.h
UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c [new file with mode: 0644]
UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf [new file with mode: 0644]
UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c
UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h
UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
UefiCpuPkg/UefiCpuPkg.dec
UefiCpuPkg/UefiCpuPkg.dsc

diff --git a/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h b/UefiCpuPkg/Include/Library/SmmCpuRendezvousLib.h
new file mode 100644 (file)
index 0000000..82e459e
--- /dev/null
@@ -0,0 +1,27 @@
+/** @file\r
+  SMM CPU Rendezvous library header file.\r
+\r
+  Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef SMM_CPU_RENDEZVOUS_H_\r
+#define SMM_CPU_RENDEZVOUS_H_\r
+\r
+/**\r
+  This routine wait for all AP processors to arrive in SMM.\r
+\r
+  @param[in]  BlockingMode  Blocking mode or non-blocking mode.\r
+\r
+  @retval EFI_SUCCESS       All processors checked in to SMM.\r
+  @retval EFI_TIMEOUT       Wait for all APs until timeout.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SmmWaitForAllProcessor (\r
+  IN  BOOLEAN  BlockingMode\r
+  );\r
+\r
+#endif\r
index 952767afce755ddfa22906ec443052b94b38d5a7..3d93d243409c81d78c2a32a087df34bdfaf5cb83 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 SMM CPU Service protocol definition.\r
 \r
-Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2013 - 2022, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -200,4 +200,38 @@ struct _EFI_SMM_CPU_SERVICE_PROTOCOL {
 \r
 extern EFI_GUID  gEfiSmmCpuServiceProtocolGuid;\r
 \r
+//\r
+//  EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL provide SMM CPU\r
+//  rendezvous service support.\r
+//\r
+#define EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL_GUID \\r
+  { \\r
+    0xaa00d50b, 0x4911, 0x428f, { 0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2, 0x4c } \\r
+  }\r
+\r
+typedef struct _EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL;\r
+\r
+/**\r
+  Wait for all APs to arrive SMM mode in given timeout constraint.\r
+\r
+  @param[in]  This                  A pointer to the EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance.\r
+  @param[in]  BlockingMode          Block or non-block mode.\r
+\r
+  @retval EFI_SUCCESS               All APs have arrived SMM mode except SMI disabled APs.\r
+  @retval EFI_TIMEOUT               There are APs not in SMM mode in given timeout constraint.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EDKII_WAIT_FOR_ALL_PROCESSOR)(\r
+  IN  EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL  *This,\r
+  IN  BOOLEAN                            BlockingMode\r
+  );\r
+\r
+struct _EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL {\r
+  EDKII_WAIT_FOR_ALL_PROCESSOR    WaitForAllProcessor;\r
+};\r
+\r
+extern EFI_GUID  gEdkiiSmmCpuRendezvousProtocolGuid;\r
+\r
 #endif\r
diff --git a/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.c
new file mode 100644 (file)
index 0000000..e573c2e
--- /dev/null
@@ -0,0 +1,103 @@
+/** @file\r
+  SMM CPU Rendezvous sevice implement.\r
+\r
+  Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#include <Base.h>\r
+#include <Uefi.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/MmServicesTableLib.h>\r
+#include <Protocol/SmmCpuService.h>\r
+#include <Library/SmmCpuRendezvousLib.h>\r
+\r
+STATIC EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL  *mSmmCpuRendezvous = NULL;\r
+STATIC VOID                               *mRegistration     = NULL;\r
+\r
+/**\r
+  Callback function to wait Smm cpu rendezvous service located.\r
+\r
+  SmmCpuRendezvousLib need to support MM_STANDALONE and DXE_SMM_DRIVER driver.\r
+  So do not use library constructor to locate the protocol.\r
+\r
+  @param[in] Protocol   Points to the protocol's unique identifier.\r
+  @param[in] Interface  Points to the interface instance.\r
+  @param[in] Handle     The handle on which the interface was installed.\r
+\r
+  @retval EFI_SUCCESS  Notification runs successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SmmCpuRendezvousProtocolNotify (\r
+  IN CONST EFI_GUID    *Protocol,\r
+  IN       VOID        *Interface,\r
+  IN       EFI_HANDLE  Handle\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+\r
+  Status = gMmst->MmLocateProtocol (\r
+                    &gEdkiiSmmCpuRendezvousProtocolGuid,\r
+                    NULL,\r
+                    (VOID **)&mSmmCpuRendezvous\r
+                    );\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+/**\r
+  This routine wait for all AP processors to arrive in SMM.\r
+\r
+  @param[in] BlockingMode  Blocking mode or non-blocking mode.\r
+\r
+  @retval EFI_SUCCESS  All avaiable APs arrived.\r
+  @retval EFI_TIMEOUT  Wait for all APs until timeout.\r
+  @retval OTHER        Fail to register SMM CPU Rendezvous service Protocol.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SmmWaitForAllProcessor (\r
+  IN BOOLEAN  BlockingMode\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+\r
+  if ((mRegistration == NULL) && (mSmmCpuRendezvous == NULL)) {\r
+    //\r
+    // Locate SMM cpu rendezvous protocol for the first time execute the function.\r
+    //\r
+    Status = gMmst->MmLocateProtocol (\r
+                      &gEdkiiSmmCpuRendezvousProtocolGuid,\r
+                      NULL,\r
+                      (VOID **)&mSmmCpuRendezvous\r
+                      );\r
+    if (EFI_ERROR (Status)) {\r
+      Status = gMmst->MmRegisterProtocolNotify (\r
+                        &gEdkiiSmmCpuRendezvousProtocolGuid,\r
+                        SmmCpuRendezvousProtocolNotify,\r
+                        &mRegistration\r
+                        );\r
+      if (EFI_ERROR (Status)) {\r
+        return Status;\r
+      }\r
+    }\r
+  }\r
+\r
+  //\r
+  // The platform have not set up. It doesn't need smm cpu rendezvous.\r
+  //\r
+  if (mSmmCpuRendezvous == NULL) {\r
+    return EFI_SUCCESS;\r
+  }\r
+\r
+  Status = mSmmCpuRendezvous->WaitForAllProcessor (\r
+                                mSmmCpuRendezvous,\r
+                                BlockingMode\r
+                                );\r
+  return Status;\r
+}\r
diff --git a/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf b/UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf
new file mode 100644 (file)
index 0000000..52374bf
--- /dev/null
@@ -0,0 +1,35 @@
+## @file\r
+# SMM CPU Rendezvous service lib.\r
+#\r
+# This is SMM CPU rendezvous service lib that wait for all\r
+# APs to enter SMM mode.\r
+#\r
+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+##\r
+\r
+[Defines]\r
+  INF_VERSION                    = 0x00010005\r
+  BASE_NAME                      = SmmCpuRendezvousLib\r
+  FILE_GUID                      = 1509Bb36-9Ba4-438B-B195-Ac5914Db14E2\r
+  MODULE_TYPE                    = DXE_SMM_DRIVER\r
+  LIBRARY_CLASS                  = SmmCpuRendezvousLib|MM_STANDALONE DXE_SMM_DRIVER\r
+\r
+[Sources]\r
+  SmmCpuRendezvousLib.c\r
+\r
+[Packages]\r
+  MdePkg/MdePkg.dec\r
+  UefiCpuPkg/UefiCpuPkg.dec\r
+\r
+[LibraryClasses]\r
+  BaseLib\r
+  DebugLib\r
+  MmServicesTableLib\r
+\r
+[Pcd]\r
+  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout                 ## CONSUMES\r
+\r
+[Protocols]\r
+  gEdkiiSmmCpuRendezvousProtocolGuid\r
index 5d624f8e9ed65b47fe2f1c43b1794e8d0e4d7564..2ebf4543c3ed75c043b58c58532d3604c509cf2e 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Implementation of SMM CPU Services Protocol.\r
 \r
-Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2011 - 2022, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -20,6 +20,13 @@ EFI_SMM_CPU_SERVICE_PROTOCOL  mSmmCpuService = {
   SmmRegisterExceptionHandler\r
 };\r
 \r
+//\r
+// EDKII SMM CPU Rendezvous Service Protocol instance\r
+//\r
+EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL  mSmmCpuRendezvousService = {\r
+  SmmCpuRendezvous\r
+};\r
+\r
 /**\r
   Gets processor information on the requested processor at the instant this call is made.\r
 \r
@@ -350,6 +357,7 @@ SmmRegisterExceptionHandler (
   @param ImageHandle The firmware allocated handle for the EFI image.\r
 \r
   @retval EFI_SUCCESS    EFI SMM CPU Services Protocol was installed successfully.\r
+  @retval OTHER          Fail to install Protocol.\r
 **/\r
 EFI_STATUS\r
 InitializeSmmCpuServices (\r
@@ -365,5 +373,64 @@ InitializeSmmCpuServices (
                     &mSmmCpuService\r
                     );\r
   ASSERT_EFI_ERROR (Status);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  Status = gSmst->SmmInstallProtocolInterface (\r
+                    &Handle,\r
+                    &gEdkiiSmmCpuRendezvousProtocolGuid,\r
+                    EFI_NATIVE_INTERFACE,\r
+                    &mSmmCpuRendezvousService\r
+                    );\r
+  ASSERT_EFI_ERROR (Status);\r
+  return Status;\r
+}\r
+\r
+/**\r
+  Wait for all processors enterring SMM until all CPUs are already synchronized or not.\r
+\r
+  If BlockingMode is False, timeout value is zero.\r
+\r
+  @param This          A pointer to the EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance.\r
+  @param BlockingMode  Blocking mode or non-blocking mode.\r
+\r
+  @retval EFI_SUCCESS  All avaiable APs arrived.\r
+  @retval EFI_TIMEOUT  Wait for all APs until timeout.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SmmCpuRendezvous (\r
+  IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL  *This,\r
+  IN BOOLEAN                            BlockingMode\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+\r
+  //\r
+  // Return success immediately if all CPUs are already synchronized.\r
+  //\r
+  if (mSmmMpSyncData->AllApArrivedWithException) {\r
+    Status = EFI_SUCCESS;\r
+    goto ON_EXIT;\r
+  }\r
+\r
+  if (!BlockingMode) {\r
+    Status = EFI_TIMEOUT;\r
+    goto ON_EXIT;\r
+  }\r
+\r
+  //\r
+  // There are some APs outside SMM, Wait for all avaiable APs to arrive.\r
+  //\r
+  SmmWaitForApArrival ();\r
+  Status = mSmmMpSyncData->AllApArrivedWithException ? EFI_SUCCESS : EFI_TIMEOUT;\r
+\r
+ON_EXIT:\r
+  if (!mSmmMpSyncData->AllApArrivedWithException) {\r
+    DEBUG ((DEBUG_INFO, "EdkiiSmmWaitForAllApArrival: Timeout to wait all APs arrival\n"));\r
+  }\r
+\r
   return Status;\r
 }\r
index 882dee4fe246697bc1ff6a8ae97cdefb7e8fc443..13c2cb8da4c3c6213af2dd84beeb61d74dabf624 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 SMM MP service implementation\r
 \r
-Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.<BR>\r
 Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
@@ -293,10 +293,14 @@ SmmWaitForApArrival (
   // Sync with APs 1st timeout\r
   //\r
   for (Timer = StartSyncTimer ();\r
-       !IsSyncTimerTimeout (Timer) && !(LmceEn && LmceSignal) &&\r
-       !AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED);\r
+       !IsSyncTimerTimeout (Timer) && !(LmceEn && LmceSignal);\r
        )\r
   {\r
+    mSmmMpSyncData->AllApArrivedWithException = AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED);\r
+    if (mSmmMpSyncData->AllApArrivedWithException) {\r
+      break;\r
+    }\r
+\r
     CpuPause ();\r
   }\r
 \r
@@ -330,10 +334,14 @@ SmmWaitForApArrival (
     // Sync with APs 2nd timeout.\r
     //\r
     for (Timer = StartSyncTimer ();\r
-         !IsSyncTimerTimeout (Timer) &&\r
-         !AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED);\r
+         !IsSyncTimerTimeout (Timer);\r
          )\r
     {\r
+      mSmmMpSyncData->AllApArrivedWithException = AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED);\r
+      if (mSmmMpSyncData->AllApArrivedWithException) {\r
+        break;\r
+      }\r
+\r
       CpuPause ();\r
     }\r
   }\r
@@ -1887,6 +1895,8 @@ InitializeMpSyncData (
     *mSmmMpSyncData->InsideSmm     = FALSE;\r
     *mSmmMpSyncData->AllCpusInSync = FALSE;\r
 \r
+    mSmmMpSyncData->AllApArrivedWithException = FALSE;\r
+\r
     for (CpuIndex = 0; CpuIndex < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; CpuIndex++) {\r
       mSmmMpSyncData->CpuData[CpuIndex].Busy =\r
         (SPIN_LOCK *)((UINTN)mSmmCpuSemaphores.SemaphoreCpu.Busy + mSemaphoreSize * CpuIndex);\r
index 26d07c5b5ea0bcb5f7761d3beb14fb1c82533f1a..aed872836c99db38b1f1ab415225eb85256c112f 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Agent Module to load other modules to deploy SMM Entry Vector for X86 CPU.\r
 \r
-Copyright (c) 2009 - 2020, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.<BR>\r
 Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
@@ -428,6 +428,7 @@ typedef struct {
   volatile SMM_CPU_SYNC_MODE    EffectiveSyncMode;\r
   volatile BOOLEAN              SwitchBsp;\r
   volatile BOOLEAN              *CandidateBsp;\r
+  volatile BOOLEAN              AllApArrivedWithException;\r
   EFI_AP_PROCEDURE              StartupProcedure;\r
   VOID                          *StartupProcArgs;\r
 } SMM_DISPATCHER_MP_SYNC_DATA;\r
@@ -1488,4 +1489,30 @@ IsRestrictedMemoryAccess (
   VOID\r
   );\r
 \r
+/**\r
+  Choose blocking or non-blocking mode to Wait for all APs.\r
+\r
+  @param[in]  This                  A pointer to the EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance.\r
+  @param[in]  BlockingMode          Blocking or non-blocking mode.\r
+\r
+  @retval EFI_SUCCESS               All APs have arrived SMM mode except SMI disabled APs.\r
+  @retval EFI_TIMEOUT               There are APs not in SMM mode in given timeout constraint.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SmmCpuRendezvous (\r
+  IN  EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL  *This,\r
+  IN  BOOLEAN                            BlockingMode\r
+  );\r
+\r
+/**\r
+  Insure when this function returns, no AP will execute normal mode code before entering SMM, except SMI disabled APs.\r
+\r
+**/\r
+VOID\r
+SmmWaitForApArrival (\r
+  VOID\r
+  );\r
+\r
 #endif\r
index 0e88071c707921d60972f1e3f0c0ce01df597c8c..deef00f9c6e9899bca24a36d7c061c604f673e76 100644 (file)
@@ -4,7 +4,7 @@
 # This SMM driver performs SMM initialization, deploy SMM Entry Vector,\r
 # provides CPU specific services in SMM.\r
 #\r
-# Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.<BR>\r
 # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
 #\r
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
   gEfiSmmReadyToLockProtocolGuid           ## NOTIFY\r
   gEfiSmmCpuServiceProtocolGuid            ## PRODUCES\r
   gEdkiiSmmMemoryAttributeProtocolGuid     ## PRODUCES\r
-  gEfiMmMpProtocolGuid                    ## PRODUCES\r
+  gEfiMmMpProtocolGuid                     ## PRODUCES\r
+  gEdkiiSmmCpuRendezvousProtocolGuid       ## PRODUCES\r
 \r
 [Guids]\r
   gEfiAcpiVariableGuid                     ## SOMETIMES_CONSUMES ## HOB # it is used for S3 boot.\r
index 7de66fde674cab50c33fcbbc3f881ecf50732589..525cde463435efd57941cc3da4f10a3e95f2dc24 100644 (file)
@@ -1,7 +1,7 @@
 ## @file  UefiCpuPkg.dec\r
 # This Package provides UEFI compatible CPU modules and libraries.\r
 #\r
-# Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2022, Intel Corporation. All rights reserved.<BR>\r
 #\r
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
@@ -62,6 +62,9 @@
   ##  @libraryclass  Provides function for loading microcode.\r
   MicrocodeLib|Include/Library/MicrocodeLib.h\r
 \r
+  ## @libraryclass  Provides function for SMM CPU Rendezvous Library.\r
+  SmmCpuRendezvousLib|Include/Library/SmmCpuRendezvousLib.h\r
+\r
 [Guids]\r
   gUefiCpuPkgTokenSpaceGuid      = { 0xac05bf33, 0x995a, 0x4ed4, { 0xaa, 0xb8, 0xef, 0x7a, 0xe8, 0xf, 0x5c, 0xb0 }}\r
   gMsegSmramGuid                 = { 0x5802bce4, 0xeeee, 0x4e33, { 0xa1, 0x30, 0xeb, 0xad, 0x27, 0xf0, 0xe4, 0x39 }}\r
@@ -77,7 +80,8 @@
 \r
 [Protocols]\r
   ## Include/Protocol/SmmCpuService.h\r
-  gEfiSmmCpuServiceProtocolGuid  = { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}\r
+  gEfiSmmCpuServiceProtocolGuid   = { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}\r
+  gEdkiiSmmCpuRendezvousProtocolGuid = { 0xaa00d50b, 0x4911, 0x428f, { 0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2, 0x4c }}\r
 \r
   ## Include/Protocol/SmMonitorInit.h\r
   gEfiSmMonitorInitProtocolGuid  = { 0x228f344d, 0xb3de, 0x43bb, { 0xa4, 0xd7, 0xea, 0x20, 0xb, 0x1b, 0x14, 0x82 }}\r
index d1d61dd6a03b3f64926749b4418669e62d52cc05..a0bbde9985d35542fede5fd86bcf7b2c6356e19a 100644 (file)
@@ -61,6 +61,7 @@
   TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf\r
   VmgExitLib|UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf\r
   MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf\r
+  SmmCpuRendezvousLib|UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf\r
 \r
 [LibraryClasses.common.SEC]\r
   PlatformSecLib|UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.inf\r
   }\r
   UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf\r
   UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf\r
+  UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf\r
 \r
 [BuildOptions]\r
   *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES\r