]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/UniversalPayload: Add definition for extra info in payload
authorRay Ni <ray.ni@intel.com>
Sat, 1 May 2021 12:17:45 +0000 (20:17 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 16 Jun 2021 07:51:00 +0000 (07:51 +0000)
The payload is in ELF format per the universal payload spec.
UNIVERSAL_PAYLOAD_INFO_HEADER is stored in the ELF payload as a separate
section named ".upld_info".

Extra data needed by payload is stored in sections whose name starts
with ".upld.".

Signed-off-by: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Guo Dong <guo.dong@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
MdeModulePkg/Include/UniversalPayload/ExtraData.h [new file with mode: 0644]
MdeModulePkg/Include/UniversalPayload/UniversalPayload.h
MdeModulePkg/MdeModulePkg.dec

diff --git a/MdeModulePkg/Include/UniversalPayload/ExtraData.h b/MdeModulePkg/Include/UniversalPayload/ExtraData.h
new file mode 100644 (file)
index 0000000..146ec84
--- /dev/null
@@ -0,0 +1,28 @@
+/** @file\r
+\r
+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+#ifndef EXTRA_DATA_H_\r
+#define EXTRA_DATA_H_\r
+\r
+extern GUID gUniversalPayloadExtraDataGuid;\r
+\r
+#pragma pack(1)\r
+\r
+typedef struct {\r
+  CHAR8                Identifier[16];\r
+  EFI_PHYSICAL_ADDRESS Base;\r
+  UINT64               Size;\r
+} UNIVERSAL_PAYLOAD_EXTRA_DATA_ENTRY;\r
+\r
+typedef struct {\r
+  UNIVERSAL_PAYLOAD_GENERIC_HEADER   PldHeader;\r
+  UINT32                             Count;\r
+  UNIVERSAL_PAYLOAD_EXTRA_DATA_ENTRY Entry[0];\r
+} UNIVERSAL_PAYLOAD_EXTRA_DATA;\r
+\r
+#pragma pack()\r
+\r
+#endif\r
index e661306a9bd9b9d75c8e460979b24f9b0cdb2345..bc8a3e0cf87556e9f169cc827bdaf909de7608b4 100644 (file)
@@ -11,8 +11,32 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #ifndef UNIVERSAL_PAYLOAD_H_\r
 #define UNIVERSAL_PAYLOAD_H_\r
 \r
+/**\r
+  Main entry point to Universal Payload.\r
+\r
+  @param HobList  Pointer to the beginning of the HOB List from boot loader.\r
+**/\r
+typedef  VOID   (EFIAPI *UNIVERSAL_PAYLOAD_ENTRY) (VOID *HobList);\r
+\r
+#define UNIVERSAL_PAYLOAD_IDENTIFIER                   SIGNATURE_32('U', 'P', 'L', 'D')\r
+#define UNIVERSAL_PAYLOAD_INFO_SEC_NAME                ".upld_info"\r
+#define UNIVERSAL_PAYLOAD_EXTRA_SEC_NAME_PREFIX        ".upld."\r
+#define UNIVERSAL_PAYLOAD_EXTRA_SEC_NAME_PREFIX_LENGTH (sizeof (UNIVERSAL_PAYLOAD_EXTRA_SEC_NAME_PREFIX) - 1)\r
+\r
 #pragma pack(1)\r
 \r
+typedef struct {\r
+  UINT32                          Identifier;\r
+  UINT32                          HeaderLength;\r
+  UINT16                          SpecRevision;\r
+  UINT8                           Reserved[2];\r
+  UINT32                          Revision;\r
+  UINT32                          Attribute;\r
+  UINT32                          Capability;\r
+  CHAR8                           ProducerId[16];\r
+  CHAR8                           ImageId[16];\r
+} UNIVERSAL_PAYLOAD_INFO_HEADER;\r
+\r
 typedef struct {\r
   UINT8                Revision;\r
   UINT8                Reserved;\r
index 8c0885955b8e7b71dddec7fc1363125beeebd4a7..10602a8f797e7c3ef51647b838dca2a7edf21477 100644 (file)
   ## Include/UniversalPayload/AcpiTable.h\r
   gUniversalPayloadAcpiTableGuid = { 0x9f9a9506, 0x5597, 0x4515, { 0xba, 0xb6, 0x8b, 0xcd, 0xe7, 0x84, 0xba, 0x87 } }\r
 \r
+  ## Include/UniversalPayload/ExtraData.h\r
+  gUniversalPayloadExtraDataGuid = {0x15a5baf6, 0x1c91, 0x467d, {0x9d, 0xfb, 0x31, 0x9d, 0x17, 0x8d, 0x4b, 0xb4}}\r
+\r
 [Ppis]\r
   ## Include/Ppi/AtaController.h\r
   gPeiAtaControllerPpiGuid       = { 0xa45e60d1, 0xc719, 0x44aa, { 0xb0, 0x7a, 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }}\r