]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Ppi/SecPlatformInformation2.h
MdePkg: Add Sec Platform Information2 PPI
[mirror_edk2.git] / MdePkg / Include / Ppi / SecPlatformInformation2.h
diff --git a/MdePkg/Include/Ppi/SecPlatformInformation2.h b/MdePkg/Include/Ppi/SecPlatformInformation2.h
new file mode 100644 (file)
index 0000000..aeb0fcc
--- /dev/null
@@ -0,0 +1,85 @@
+/** @file\r
+  This file declares Sec Platform Information2 PPI.\r
+\r
+  This service is the primary handoff state into the PEI Foundation.\r
+  This service abstracts platform-specific information for many CPU's.\r
+\r
+Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under\r
+the terms and conditions of the BSD License that accompanies this distribution.\r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php.\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+  @par Revision Reference:\r
+  This PPI is defined in PI Version 1.4.\r
+\r
+**/\r
+\r
+#ifndef __SEC_PLATFORM_INFORMATION2_PPI_H__\r
+#define __SEC_PLATFORM_INFORMATION2_PPI_H__\r
+\r
+#include <Ppi/SecPlatformInformation.h>\r
+\r
+#define EFI_SEC_PLATFORM_INFORMATION2_GUID \\r
+  { \\r
+    0x9e9f374b, 0x8f16, 0x4230, {0x98, 0x24, 0x58, 0x46, 0xee, 0x76, 0x6a, 0x97 } \\r
+  }\r
+\r
+typedef struct _EFI_SEC_PLATFORM_INFORMATION2_PPI EFI_SEC_PLATFORM_INFORMATION2_PPI;\r
+\r
+///\r
+/// EFI_SEC_PLATFORM_INFORMATION_CPU.\r
+///\r
+typedef struct {\r
+  UINT32                               CpuLocation;\r
+  EFI_SEC_PLATFORM_INFORMATION_RECORD  InfoRecord;\r
+} EFI_SEC_PLATFORM_INFORMATION_CPU;\r
+\r
+///\r
+/// EFI_SEC_PLATFORM_INFORMATION_RECORD2.\r
+///\r
+typedef struct {\r
+  ///\r
+  /// The CPU location would be the local APIC ID\r
+  ///\r
+  UINT32                               NumberOfCpus;\r
+  EFI_SEC_PLATFORM_INFORMATION_CPU     CpuInstance[1];\r
+} EFI_SEC_PLATFORM_INFORMATION_RECORD2;\r
+\r
+/**\r
+  This interface conveys state information out of the Security (SEC) phase into PEI.\r
+\r
+  This service is published by the SEC phase.\r
+\r
+  @param  PeiServices                The pointer to the PEI Services Table.\r
+  @param  StructureSize              The pointer to the variable describing size of the input buffer.\r
+  @param  PlatformInformationRecord2 The pointer to the EFI_SEC_PLATFORM_INFORMATION_RECORD2.\r
+\r
+  @retval EFI_SUCCESS                The data was successfully returned.\r
+  @retval EFI_BUFFER_TOO_SMALL       The buffer was too small. The current buffer size needed to\r
+                                     hold the record is returned in StructureSize.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SEC_PLATFORM_INFORMATION2)(\r
+  IN CONST  EFI_PEI_SERVICES                     **PeiServices,\r
+  IN OUT    UINT64                               *StructureSize,\r
+  OUT       EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+);\r
+\r
+///\r
+/// This service abstracts platform-specific information for many CPU's.\r
+/// It is the multi-processor equivalent of PlatformInformation for\r
+/// implementations that synchronize all CPU's in the SEC phase.\r
+///\r
+struct _EFI_SEC_PLATFORM_INFORMATION2_PPI {\r
+  EFI_SEC_PLATFORM_INFORMATION2  PlatformInformation2;\r
+};\r
+\r
+extern EFI_GUID gEfiSecPlatformInformation2PpiGuid;\r
+\r
+#endif\r