The payload is in ELF format per the universal payload spec. PLD_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...@intel.com> Cc: Michael D Kinney <michael.d.kin...@intel.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang....@intel.com> Cc: Maurice Ma <maurice...@intel.com> Cc: Guo Dong <guo.d...@intel.com> --- MdePkg/Include/UniversalPayload/ExtraData.h | 28 ++++++++++++++ .../UniversalPayload/UniversalPayload.h | 38 +++++++++++++++++++ MdePkg/MdePkg.dec | 3 ++ 3 files changed, 69 insertions(+) create mode 100644 MdePkg/Include/UniversalPayload/ExtraData.h create mode 100644 MdePkg/Include/UniversalPayload/UniversalPayload.h diff --git a/MdePkg/Include/UniversalPayload/ExtraData.h b/MdePkg/Include/UniversalPayload/ExtraData.h new file mode 100644 index 0000000000..07b7426683 --- /dev/null +++ b/MdePkg/Include/UniversalPayload/ExtraData.h @@ -0,0 +1,28 @@ +/** @file + + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#ifndef __EXTRA_DATA_H__ +#define __EXTRA_DATA_H__ + +extern GUID gPldExtraDataGuid; + +#pragma pack(1) + +typedef struct { + CHAR8 Identifier[16]; + EFI_PHYSICAL_ADDRESS Base; + UINT64 Size; +} PLD_EXTRA_DATA_ENTRY; + +typedef struct { + PLD_GENERIC_HEADER PldHeader; + UINT32 Count; + PLD_EXTRA_DATA_ENTRY Entry[0]; +} PLD_EXTRA_DATA; + +#pragma pack() + +#endif diff --git a/MdePkg/Include/UniversalPayload/UniversalPayload.h b/MdePkg/Include/UniversalPayload/UniversalPayload.h new file mode 100644 index 0000000000..b8e9fe11a1 --- /dev/null +++ b/MdePkg/Include/UniversalPayload/UniversalPayload.h @@ -0,0 +1,38 @@ +/** @file + + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#ifndef __UNIVERSAL_PAYLOAD_H__ +#define __UNIVERSAL_PAYLOAD_H__ + +typedef VOID (EFIAPI *UNIVERSAL_PAYLOAD_ENTRY) (VOID *HobList); + +#define PLD_IDENTIFIER SIGNATURE_32('U', 'P', 'L', 'D') +#define PLD_INFO_SEC_NAME ".upld_info" +#define PLD_EXTRA_SEC_NAME_PREFIX ".upld." +#define PLD_EXTRA_SEC_NAME_PREFIX_LENGTH (sizeof (PLD_EXTRA_SEC_NAME_PREFIX) - 1) + +#pragma pack(1) + +typedef struct { + UINT32 Identifier; + UINT32 HeaderLength; + UINT16 SpecRevision; + UINT8 Reserved[2]; + UINT32 Revision; + UINT32 Attribute; + UINT32 Capability; + CHAR8 ProducerId[16]; + CHAR8 ImageId[16]; +} PLD_INFO_HEADER; + +typedef struct { + UINT8 Revision; + UINT8 Reserved[3]; +} PLD_GENERIC_HEADER; + +#pragma pack() + +#endif diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index b49f88d8e1..638fe4c7e5 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -831,6 +831,9 @@ [Guids.IA32, Guids.X64] ## Include/Guid/Cper.h gEfiIa32X64ErrorTypeMsCheckGuid = { 0x48AB7F57, 0xDC34, 0x4f6c, { 0xA7, 0xD3, 0xB0, 0xB5, 0xB0, 0xA7, 0x43, 0x14 }} + ## Include/UniversalPayload/ExtraData.h + gPldExtraDataGuid = {0x15a5baf6, 0x1c91, 0x467d, {0x9d, 0xfb, 0x31, 0x9d, 0x17, 0x8d, 0x4b, 0xb4}} + [Ppis] ## Include/Ppi/MasterBootMode.h gEfiPeiMasterBootModePpiGuid = { 0x7408d748, 0xfc8c, 0x4ee6, {0x92, 0x88, 0xc4, 0xbe, 0xc0, 0x92, 0xa4, 0x10 } } -- 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#75600): https://edk2.groups.io/g/devel/message/75600 Mute This Topic: https://groups.io/mt/83095854/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-