]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Include/Protocol/SmmCpuService.h
UefiCpuPkg: Extend SMM CPU Service with rendezvous support.
[mirror_edk2.git] / UefiCpuPkg / Include / Protocol / SmmCpuService.h
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