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>
--- /dev/null
+/** @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
#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
## 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