UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / SignedCapsulePkg / Include / Guid / EdkiiSystemFmpCapsule.h
CommitLineData
3705cf42
JY
1/** @file\r
2 Guid & data structure used for Delivering Capsules Containing Updates to\r
3 EDKII System Firmware Management Protocol\r
4\r
5 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
fbf06957 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
3705cf42
JY
7\r
8**/\r
9\r
3705cf42
JY
10#ifndef __EDKII_SYSTEM_FMP_CAPSULE_GUID_H__\r
11#define __EDKII_SYSTEM_FMP_CAPSULE_GUID_H__\r
12\r
13/**\r
14\r
15 1. Capsule Layout is below:\r
16 +------------------------------------------+\r
17 | Capsule Header (OPTIONAL, WFU) | <== ESRT.FwClass (Optional)\r
18 +------------------------------------------+\r
19 | FMP Capsule Header | <== EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID\r
20 +------------------------------------------+\r
21 | FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER | <== PcdSystemFmpCapsuleImageTypeIdGuid\r
22 +------------------------------------------+\r
23 | EFI_FIRMWARE_IMAGE_AUTHENTICATION |\r
24 +------------------------------------------+\r
25 | FMP Payload |\r
26 +------------------------------------------+\r
27\r
28 2. System FMP Payload is below:\r
29 +------------------------------------------+\r
30 | EFI_FIRMWARE_VOLUME |\r
31 | +------------------------------------+ |\r
32 | | FFS (Configure File) | | <== gEdkiiSystemFmpCapsuleConfigFileGuid\r
33 | +------------------------------------+ |\r
34 | | FFS (Driver FV) | | <== gEdkiiSystemFmpCapsuleDriverFvFileGuid\r
35 | +------------------------------------+ |\r
36 | | FFS (System Firmware Image) | | <== PcdEdkiiSystemFirmwareFileGuid\r
37 | | +------------------------------+ | |\r
38 | | | FV Recovery | | |\r
39 | | |------------------------------| | |\r
40 | | | FV Main | | |\r
41 | | +------------------------------+ | |\r
42 | +------------------------------------+ |\r
43 +------------------------------------------+\r
44\r
45 NOTE: There might be multiple FFS (System Firmware Image) exist in the System FMP Capsule.\r
46 Only the one, whose FFS GUID matches PcdEdkiiSystemFirmwareFileGuid, takes effect.\r
47 The other FFS is ignored.\r
48\r
49 3. The format of the recovery configuration is below:\r
50\r
51 [Head]\r
52 NumOfRecovery = <Num> # Decimal\r
53 Recovery0 = <Name1> # String\r
54 Recovery1 = <Name2> # String\r
55 Recovery<Num-1> = <NameX> # String\r
56\r
57 [Name?]\r
58 Length = <Length> # Fv Length (HEX)\r
59 ImageOffset = <ImageOffset> # Fv offset of this SystemFirmware image (HEX)\r
60 FileGuid = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX # PcdEdkiiSystemFirmwareFileGuid\r
61\r
582b6cdd 62 NOTE: The [Name?] entry may have different FileGuid.\r
3705cf42
JY
63 Only the one, whose FileGuid matches PcdEdkiiSystemFirmwareFileGuid, takes effect.\r
64 The other entry is ignored.\r
65\r
66 4. The format of the capsule update configuration is below:\r
67\r
68 [Head]\r
69 NumOfUpdate = <Num> # Decimal\r
70 Update0 = <Name1> # String\r
71 Update1 = <Name2> # String\r
72 Update<Num-1> = <NameX> # String\r
73\r
74 [Name?]\r
75 FirmwareType = 0 # 0 - SystemFirmware, 1 - NvRam\r
76 AddressType = 0 # 0 - relative address, 1 - absolute address.\r
77 BaseAddress = <BaseAddress> # Base address offset on flash (HEX)\r
78 Length = <Length> # Image Length (HEX)\r
79 ImageOffset = <ImageOffset> # Image offset of this SystemFirmware image (HEX)\r
80 FileGuid = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX # PcdEdkiiSystemFirmwareFileGuid\r
81\r
582b6cdd 82 NOTE: The [Name?] entry may have different FileGuid.\r
3705cf42
JY
83 Only the one, whose FileGuid matches PcdEdkiiSystemFirmwareFileGuid, takes effect.\r
84 The other entry is ignored.\r
85\r
86**/\r
87\r
88#define EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE SIGNATURE_32('S', 'F', 'I', 'D')\r
89\r
90#pragma pack(1)\r
91typedef struct {\r
b8786489
MK
92 UINT32 Signature;\r
93 UINT32 HeaderLength; // Length of EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR, excluding NameString\r
94 UINT32 Length; // Length of the data structure, including NameString\r
3705cf42 95 // Below structure is similar as UEFI EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetPackageInfo()\r
b8786489
MK
96 UINT32 PackageVersion;\r
97 UINT32 PackageVersionNameStringOffset; // Offset from head, CHAR16 string including NULL terminate char\r
3705cf42 98 // Below structure is similar as UEFI EFI_FIRMWARE_IMAGE_DESCRIPTOR\r
b8786489
MK
99 UINT8 ImageIndex;\r
100 UINT8 Reserved[3];\r
101 EFI_GUID ImageTypeId;\r
102 UINT64 ImageId;\r
103 UINT32 ImageIdNameStringOffset; // Offset from head, CHAR16 string including NULL terminate char\r
104 UINT32 Version;\r
105 UINT32 VersionNameStringOffset; // Offset from head, CHAR16 string including NULL terminate char\r
106 UINT8 Reserved2[4];\r
107 UINT64 Size;\r
108 UINT64 AttributesSupported;\r
109 UINT64 AttributesSetting;\r
110 UINT64 Compatibilities;\r
111 UINT32 LowestSupportedImageVersion;\r
112 UINT32 LastAttemptVersion;\r
113 UINT32 LastAttemptStatus;\r
114 UINT8 Reserved3[4];\r
115 UINT64 HardwareInstance;\r
3705cf42 116 // real string data\r
b8786489
MK
117 // CHAR16 ImageIdNameStr[]; // CHAR16 string including NULL terminate char\r
118 // CHAR16 VersionNameStr[]; // CHAR16 string including NULL terminate char\r
119 // CHAR16 PackageVersionNameStr[]; // CHAR16 string including NULL terminate char\r
3705cf42
JY
120} EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR;\r
121#pragma pack()\r
122\r
123/**\r
124 System Firmware Image Descriptor is below:\r
125 +----------------------+\r
126 | System Firmware (FV) |\r
127 |+--------------------+|\r
128 || FFS (Freeform) || <== gEdkiiSystemFirmwareImageDescriptorFileGuid\r
129 ||+------------------+||\r
130 ||| SECTION (RAW) |||\r
131 ||| System Firmware |||\r
132 ||| Image Descriptor |||\r
133 ||+------------------+||\r
134 |+--------------------+|\r
135 | |\r
136 | |\r
137 +----------------------+\r
138**/\r
139\r
b8786489
MK
140extern EFI_GUID gEdkiiSystemFirmwareImageDescriptorFileGuid;\r
141extern EFI_GUID gEdkiiSystemFmpCapsuleConfigFileGuid;\r
142extern EFI_GUID gEdkiiSystemFmpCapsuleDriverFvFileGuid;\r
3705cf42
JY
143\r
144#endif\r