1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
//! Patina GUID Definitions
//!
//! GUIDs that are used for common and generic events between drivers but are not defined in a formal
//! specification.
//!
//! ## License
//!
//! Copyright (C) Microsoft Corporation.
//!
//! SPDX-License-Identifier: Apache-2.0
//!
/// Cache Attribute Change Event Group GUID
///
/// The GUID for an event group signaled when the cache attributes for a memory region are changed. The event group
/// is intended for architectures, such as x86, that require cache attribute changes to be propagated to all APs.
///
/// (`B8E477C7-26A9-4B9A-A7C9-5F8F1F3D9C7B`)
pub const CACHE_ATTRIBUTE_CHANGE_EVENT_GROUP: crateBinaryGuid =
cratefrom_string;
/// DXE Core Module GUID
///
/// The FFS file GUID for the DXE Core module. Interfaces that depend upon a module GUID such as the Memory Allocation
/// Module HOB and status codes that are produced by the DXE Core module will use this GUID.
///
/// Platforms that integrate the DXE Core module into their firmware volumes should use this GUID to identify the
/// DXE Core FFS file.
///
/// (`23C9322F-2AF2-476A-BC4C-26BC88266C71`)
/// ```
/// # use patina::guids::DXE_CORE;
/// # assert_eq!("23C9322F-2AF2-476A-BC4C-26BC88266C71", format!("{}", DXE_CORE));
/// ```
pub const DXE_CORE: crateBinaryGuid = cratefrom_string;
/// Exit Boot Services Failed GUID
///
/// The GUID for an event group signaled when ExitBootServices() fails. For example, the ExitBootServices()
/// implementation may find that the memory map key provided does not match the current memory map key and return
/// an error code. This event group will be signaled in that case just before returning to the caller.
///
/// (`4F6C5507-232F-4787-B95E-72F862490CB1`)
/// ```
/// # use patina::guids::EBS_FAILED;
/// # assert_eq!("4F6C5507-232F-4787-B95E-72F862490CB1", format!("{}", EBS_FAILED));
/// ```
pub const EBS_FAILED: crateBinaryGuid = cratefrom_string;
/// EDKII FPDT (Firmware Performance Data Table) extender firmware performance.
///
/// Use in HOB list to mark a hob as performance reports.
/// Report status code guide for FBPT address.
/// Configuration table guid for the FBPT address.
///
/// (`3B387BFD-7ABC-4CF2-A0CA-B6A16C1B1B25`)
/// ```
/// # use patina::guids::EDKII_FPDT_EXTENDED_FIRMWARE_PERFORMANCE;
/// # assert_eq!("3B387BFD-7ABC-4CF2-A0CA-B6A16C1B1B25", format!("{}", EDKII_FPDT_EXTENDED_FIRMWARE_PERFORMANCE));
/// ```
pub const EDKII_FPDT_EXTENDED_FIRMWARE_PERFORMANCE: crateBinaryGuid =
cratefrom_string;
/// Exit Boot Services event group GUID.
///
/// The GUID for the event group signaled when `ExitBootServices()` is called.
///
/// In MM, this is forwarded as an MMI to allow MM drivers to perform cleanup.
///
/// Defined in UEFI/PI as `gEfiEventExitBootServicesGuid`.
///
/// (`27ABF055-B1B8-4C26-8048-748F37BAA2DF`)
/// ```
/// # use patina::{Guid, guids::EVENT_EXIT_BOOT_SERVICES};
/// # assert_eq!("27ABF055-B1B8-4C26-8048-748F37BAA2DF", format!("{:?}", Guid::from_ref(&EVENT_EXIT_BOOT_SERVICES)));
/// ```
pub const EVENT_EXIT_BOOT_SERVICES: crateBinaryGuid =
cratefrom_string;
/// End of dxe event group GUID.
///
/// (`02CE967A-DD7E-4FFC-9EE7-810CF0470880`)
/// ```
/// # use patina::guids::EVENT_GROUP_END_OF_DXE;
/// # assert_eq!("02CE967A-DD7E-4FFC-9EE7-810CF0470880", format!("{}", EVENT_GROUP_END_OF_DXE));
/// ```
pub const EVENT_GROUP_END_OF_DXE: crateBinaryGuid =
cratefrom_string;
/// Ready to Boot event group GUID.
///
/// The GUID for the event group signaled when the platform is ready to boot.
///
/// In MM, this is forwarded as an MMI to allow MM drivers to perform final setup.
///
/// Defined in UEFI/PI as `gEfiEventReadyToBootGuid`.
///
/// (`7CE88FB3-4BD7-4679-87A8-A8D8DEE50D2B`)
/// ```
/// # use patina::{Guid, guids::EVENT_READY_TO_BOOT};
/// # assert_eq!("7CE88FB3-4BD7-4679-87A8-A8D8DEE50D2B", format!("{:?}", Guid::from_ref(&EVENT_READY_TO_BOOT)));
/// ```
pub const EVENT_READY_TO_BOOT: crateBinaryGuid =
cratefrom_string;
/// Hardware Interrupt protocol GUID.
/// This protocol provides a means of registering and unregistering interrupt handlers for AARCH64 systems.
///
/// (`2890B3EA-053D-1643-AD0C-D64808DA3FF1`)
/// ```
/// # use patina::guids::HARDWARE_INTERRUPT_PROTOCOL;
/// # assert_eq!("2890B3EA-053D-1643-AD0C-D64808DA3FF1", format!("{}", HARDWARE_INTERRUPT_PROTOCOL));
/// ```
pub const HARDWARE_INTERRUPT_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// Hardware Interrupt v2 protocol GUID.
/// This protocol provides a means of registering and unregistering interrupt handlers for AARCH64 systems.
/// This protocol extends the Hardware Interrupt Protocol to support interrupt type query.
///
/// (`32898322-2DA1-474A-BAAA-F3F7CF569470`)
/// ```
/// # use patina::guids::HARDWARE_INTERRUPT_PROTOCOL_V2;
/// # assert_eq!("32898322-2DA1-474A-BAAA-F3F7CF569470", format!("{}", HARDWARE_INTERRUPT_PROTOCOL_V2));
/// ```
pub const HARDWARE_INTERRUPT_PROTOCOL_V2: crateBinaryGuid =
cratefrom_string;
/// Memory Type Info GUID
///
/// The memory type information HOB and variable can be used to store information
/// for each memory type in Variable or HOB.
///
/// The Memory Type Information GUID can also be optionally used as the Owner
/// field of a Resource Descriptor HOB to provide the preferred memory range
/// for the memory types described in the Memory Type Information GUID HOB.
///
/// (`4C19049F-4137-4DD3-9C10-8B97A83FFDFA`)
/// ```
/// # use patina::guids::MEMORY_TYPE_INFORMATION;
/// # assert_eq!("4C19049F-4137-4DD3-9C10-8B97A83FFDFA", format!("{}", MEMORY_TYPE_INFORMATION));
/// ```
pub const MEMORY_TYPE_INFORMATION: crateBinaryGuid =
cratefrom_string;
/// MM Dispatch Event GUID.
///
/// An MMI handler is registered with this GUID to trigger driver dispatch.
///
/// When the supervisor sends an MMI with this GUID, the core attempts to
/// dispatch any previously-discovered-but-not-yet-dispatched drivers.
///
/// Defined in StandaloneMmPkg as `gEventMmDispatchGuid`.
///
/// (`7E6EFFFA-69B4-4C1B-A4C7-AFF9C9244FEE`)
/// ```
/// # use patina::{Guid, guids::MM_DISPATCH_EVENT};
/// # assert_eq!("7E6EFFFA-69B4-4C1B-A4C7-AFF9C9244FEE", format!("{:?}", Guid::from_ref(&MM_DISPATCH_EVENT)));
/// ```
pub const MM_DISPATCH_EVENT: crateBinaryGuid = cratefrom_string;
/// DXE MM Ready To Lock Protocol GUID.
///
/// This protocol GUID is used to signal that the DXE phase is ready to lock
/// down MM. When an MMI with this GUID is received, the MM core begins the
/// ready-to-lock sequence.
///
/// Defined in PI as `gEfiDxeMmReadyToLockProtocolGuid`.
///
/// (`60FF8964-E906-41D0-AFED-F241E974E08E`)
/// ```
/// # use patina::{Guid, guids::MM_DXE_READY_TO_LOCK_PROTOCOL};
/// # assert_eq!("60FF8964-E906-41D0-AFED-F241E974E08E", format!("{:?}", Guid::from_ref(&MM_DXE_READY_TO_LOCK_PROTOCOL)));
/// ```
pub const MM_DXE_READY_TO_LOCK_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// MM End of DXE Protocol GUID.
///
/// This protocol is installed in the MM handle database when an End-of-DXE MMI
/// is received. MM drivers can register a protocol notification for this GUID
/// to perform actions that must happen after all DXE drivers have been dispatched
/// but before 3rd-party OpROMs execute.
///
/// Defined in PI as `gEfiMmEndOfDxeProtocolGuid`.
///
/// (`24E70042-D5C5-4260-8C39-0AD3AA32E93D`)
/// ```
/// # use patina::{Guid, guids::MM_END_OF_DXE_PROTOCOL};
/// # assert_eq!("24E70042-D5C5-4260-8C39-0AD3AA32E93D", format!("{:?}", Guid::from_ref(&MM_END_OF_DXE_PROTOCOL)));
/// ```
pub const MM_END_OF_DXE_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// MM End of PEI Protocol GUID.
///
/// This protocol is installed in the MM handle database when an End-of-PEI MMI
/// is received. It signals that the PEI phase has completed.
///
/// Defined in PI as `gEfiMmEndOfPeiProtocol`.
///
/// (`F33E1BF3-980B-4BFB-A29A-B29C86453732`)
/// ```
/// # use patina::{Guid, guids::MM_END_OF_PEI_PROTOCOL};
/// # assert_eq!("F33E1BF3-980B-4BFB-A29A-B29C86453732", format!("{:?}", Guid::from_ref(&MM_END_OF_PEI_PROTOCOL)));
/// ```
pub const MM_END_OF_PEI_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// MM Ready To Lock Protocol GUID.
///
/// This protocol is installed in the MM handle database when the ready-to-lock
/// handler runs. MM drivers can register a protocol notification for this GUID
/// to be informed that MMRAM is about to be locked.
///
/// Defined in PI as `gEfiMmReadyToLockProtocolGuid`.
///
/// (`47B7FA8C-F4BD-4AF6-8200-333086F0D2C8`)
/// ```
/// # use patina::{Guid, guids::MM_READY_TO_LOCK_PROTOCOL};
/// # assert_eq!("47B7FA8C-F4BD-4AF6-8200-333086F0D2C8", format!("{:?}", Guid::from_ref(&MM_READY_TO_LOCK_PROTOCOL)));
/// ```
pub const MM_READY_TO_LOCK_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// Performance Protocol GUID.
///
/// This protocol provides a means of adding performace record to the Firmware Basic Boot Performance Table (FBPT).
///
/// (`76B6BDFA-2ACD-4462-9E3F-CB58C969D937`)
/// ```
/// # use patina::guids::PERFORMANCE_PROTOCOL;
/// # assert_eq!("76B6BDFA-2ACD-4462-9E3F-CB58C969D937", format!("{}", PERFORMANCE_PROTOCOL));
/// ```
pub const PERFORMANCE_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// EFI SMM Communication Protocol GUID as defined in the PI 1.2 specification.
///
/// This protocol provides a means of communicating between drivers outside of SMM and SMI
/// handlers inside of SMM.
///
/// (`C68ED8E2-9DC6-4CBD-9D94-DB65ACC5C332`)
/// ```
/// # use patina::guids::SMM_COMMUNICATION_PROTOCOL;
/// # assert_eq!("C68ED8E2-9DC6-4CBD-9D94-DB65ACC5C332", format!("{}", SMM_COMMUNICATION_PROTOCOL));
/// ```
pub const SMM_COMMUNICATION_PROTOCOL: crateBinaryGuid =
cratefrom_string;
/// Zero GUID
///
/// All-zero GUID, used as a marker or placeholder.
///
/// (`00000000-0000-0000-0000-000000000000`)
/// ```
/// # use patina::guids::ZERO;
/// # assert_eq!("00000000-0000-0000-0000-000000000000", format!("{}", ZERO));
/// ```
pub const ZERO: crateBinaryGuid = cratefrom_string;
/// EFI_HOB_MEMORY_ALLOC_STACK_GUID
///
/// Describes the memory stack that is produced by the HOB producer phase and upon which all post
/// memory-installed executable content in the HOB producer phase is executing.
///
/// (`4ED4BF27-4092-42E9-807D-527B1D00C9BD`)
/// ```
/// # use patina::guids::HOB_MEMORY_ALLOC_STACK;
/// # assert_eq!("4ED4BF27-4092-42E9-807D-527B1D00C9BD", format!("{}", HOB_MEMORY_ALLOC_STACK));
/// ```
pub const HOB_MEMORY_ALLOC_STACK: crateBinaryGuid =
cratefrom_string;
/// EFI HOB List GUID
///
/// The GUID used to identify the HOB list when it is installed as a configuration table entry
/// in the EFI System Table or the MM System Table. Drivers can locate the HOB list by searching
/// the configuration table for this GUID.
///
/// Defined in the PI Specification as `gEfiHobListGuid`.
///
/// (`7739F24C-93D7-11D4-9A3A-0090273FC14D`)
/// ```
/// # use patina::{Guid, guids::HOB_LIST};
/// # assert_eq!("7739F24C-93D7-11D4-9A3A-0090273FC14D", format!("{:?}", Guid::from_ref(&HOB_LIST)));
/// ```
pub const HOB_LIST: crateBinaryGuid = cratefrom_string;