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