]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/EntryPoints/EdkIIGlueSmmDriverEntryPoint.c
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / EntryPoints / EdkIIGlueSmmDriverEntryPoint.c
1 /*++
2
3 Copyright (c) 2004 - 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12
13 Module Name:
14
15 EdkIIGlueSmmDriverEntryPoint.c
16
17 Abstract:
18
19 Smm Driver entry point template file
20
21 --*/
22
23 #include "EdkIIGlueDxe.h"
24 #include "Common/EdkIIGlueDependencies.h"
25
26
27 //
28 // Module Unload Handler
29 //
30 #ifdef __EDKII_GLUE_MODULE_UNLOAD_HANDLER__
31 EFI_STATUS
32 EFIAPI
33 __EDKII_GLUE_MODULE_UNLOAD_HANDLER__ (
34 EFI_HANDLE ImageHandle
35 );
36 #endif
37
38 EFI_STATUS
39 EFIAPI
40 ProcessModuleUnloadList (
41 EFI_HANDLE ImageHandle
42 )
43 {
44 #ifdef __EDKII_GLUE_MODULE_UNLOAD_HANDLER__
45 return (__EDKII_GLUE_MODULE_UNLOAD_HANDLER__ (ImageHandle));
46 #else
47 return EFI_SUCCESS;
48 #endif
49 }
50
51 #ifdef __EDKII_GLUE_EFI_CALLER_ID_GUID__
52 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiCallerIdGuid = __EDKII_GLUE_EFI_CALLER_ID_GUID__;
53 #endif
54
55 //
56 // Library constructors
57 //
58 VOID
59 EFIAPI
60 ProcessLibraryConstructorList (
61 IN EFI_HANDLE ImageHandle,
62 IN EFI_SYSTEM_TABLE *SystemTable
63 )
64 {
65 //
66 // Declare "Status" if any of the following libraries are used
67 //
68 #if defined(__EDKII_GLUE_DXE_HOB_LIB__) \
69 || defined(__EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__) \
70 || defined(__EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__) \
71 || defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) \
72 || defined(__EDKII_GLUE_DXE_SERVICES_TABLE_LIB__) \
73 || defined(__EDKII_GLUE_DXE_SMBUS_LIB__) \
74 || defined(__EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__) \
75 || defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)
76 EFI_STATUS Status;
77 #endif
78
79 //
80 // EdkII Glue Library Constructors:
81 // NOTE: the constructors must be called according to dependency order
82 //
83 // UefiBootServicesTableLib UefiBootServicesTableLibConstructor()
84 // DxeIoLibCpuIo IoLibConstructor
85 // EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()
86 // DxeHobLib HobLibConstructor()
87 // UefiDriverModelLib UefiDriverModelLibConstructor()
88 // DxeSmbusLib SmbusLibConstructor()
89 // DxeServicesTableLib DxeServicesTableLibConstructor()
90 // UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()
91 // check here: check lib usage
92 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
93 Status = UefiBootServicesTableLibConstructor (ImageHandle, SystemTable);
94 ASSERT_EFI_ERROR (Status);
95 #endif
96
97 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
98 Status = IoLibConstructor (ImageHandle, SystemTable);
99 ASSERT_EFI_ERROR (Status);
100 #endif
101
102 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
103 Status = RuntimeDriverLibConstruct (ImageHandle, SystemTable);
104 ASSERT_EFI_ERROR (Status);
105 #endif
106
107 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
108 Status = UefiRuntimeServicesTableLibConstructor (ImageHandle, SystemTable);
109 ASSERT_EFI_ERROR (Status);
110 #endif
111
112 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
113 Status = UefiDriverModelLibConstructor (ImageHandle, SystemTable);
114 ASSERT_EFI_ERROR (Status);
115 #endif
116
117 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
118 Status = DxeServicesTableLibConstructor (ImageHandle, SystemTable);
119 ASSERT_EFI_ERROR (Status);
120 #endif
121
122 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
123 Status = HobLibConstructor (ImageHandle, SystemTable);
124 ASSERT_EFI_ERROR (Status);
125 #endif
126
127 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
128 Status = SmbusLibConstructor (ImageHandle, SystemTable);
129 ASSERT_EFI_ERROR (Status);
130 #endif
131 }
132
133 //
134 // Library destructors
135 //
136 VOID
137 EFIAPI
138 ProcessLibraryDestructorList (
139 IN EFI_HANDLE ImageHandle,
140 IN EFI_SYSTEM_TABLE *SystemTable
141 )
142 {
143 }
144
145 EFI_BOOT_SERVICES *mBS;
146
147 /**
148 This function returns the size, in bytes,
149 of the device path data structure specified by DevicePath.
150 If DevicePath is NULL, then 0 is returned.
151
152 @param DevicePath A pointer to a device path data structure.
153
154 @return The size of a device path in bytes.
155
156 **/
157 STATIC
158 UINTN
159 EFIAPI
160 SmmGetDevicePathSize (
161 IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
162 )
163 {
164 CONST EFI_DEVICE_PATH_PROTOCOL *Start;
165
166 if (DevicePath == NULL) {
167 return 0;
168 }
169
170 //
171 // Search for the end of the device path structure
172 //
173 Start = DevicePath;
174 while (!EfiIsDevicePathEnd (DevicePath)) {
175 DevicePath = EfiNextDevicePathNode (DevicePath);
176 }
177
178 //
179 // Compute the size and add back in the size of the end device path structure
180 //
181 return ((UINTN) DevicePath - (UINTN) Start) + sizeof (EFI_DEVICE_PATH_PROTOCOL);
182 }
183
184 /**
185 This function appends the device path SecondDevicePath
186 to every device path instance in FirstDevicePath.
187
188 @param FirstDevicePath A pointer to a device path data structure.
189
190 @param SecondDevicePath A pointer to a device path data structure.
191
192 @return A pointer to the new device path is returned.
193 NULL is returned if space for the new device path could not be allocated from pool.
194 It is up to the caller to free the memory used by FirstDevicePath and SecondDevicePath
195 if they are no longer needed.
196
197 **/
198 EFI_DEVICE_PATH_PROTOCOL *
199 EFIAPI
200 SmmAppendDevicePath (
201 IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath,
202 IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath
203 )
204 {
205 EFI_STATUS Status;
206 UINTN Size;
207 UINTN Size1;
208 UINTN Size2;
209 EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
210 EFI_DEVICE_PATH_PROTOCOL *DevicePath2;
211
212 ASSERT (FirstDevicePath != NULL && SecondDevicePath != NULL);
213
214 //
215 // Allocate space for the combined device path. It only has one end node of
216 // length EFI_DEVICE_PATH_PROTOCOL
217 //
218 Size1 = SmmGetDevicePathSize (FirstDevicePath);
219 Size2 = SmmGetDevicePathSize (SecondDevicePath);
220 Size = Size1 + Size2 - sizeof (EFI_DEVICE_PATH_PROTOCOL);
221
222 Status = (mBS->AllocatePool) (EfiBootServicesData, Size, (VOID **) &NewDevicePath);
223
224 if (EFI_SUCCESS == Status) {
225 (mBS->CopyMem) ((VOID *) NewDevicePath, (VOID *) FirstDevicePath, Size1);
226 //
227 // Over write Src1 EndNode and do the copy
228 //
229 DevicePath2 = (EFI_DEVICE_PATH_PROTOCOL *) ((CHAR8 *) NewDevicePath + (Size1 - sizeof (EFI_DEVICE_PATH_PROTOCOL)));
230 (mBS->CopyMem) ((VOID *) DevicePath2, (VOID *) SecondDevicePath, Size2);
231 }
232
233 return NewDevicePath;
234 }
235
236 /**
237 Unload function that is registered in the LoadImage protocol. It un-installs
238 protocols produced and deallocates pool used by the driver. Called by the core
239 when unloading the driver.
240
241 @param ImageHandle ImageHandle of the unloaded driver
242
243 @return Status of the ProcessModuleUnloadList.
244
245 **/
246 EFI_STATUS
247 EFIAPI
248 _DriverUnloadHandler (
249 EFI_HANDLE ImageHandle
250 )
251 {
252 EFI_STATUS Status;
253
254 //
255 // Call the unload handlers for all the modules
256 //
257 Status = ProcessModuleUnloadList (ImageHandle);
258
259 //
260 // If the driver specific unload handler does not return an error, then call all of the
261 // library destructors. If the unload handler returned an error, then the driver can not be
262 // unloaded, and the library destructors should not be called
263 //
264 if (!EFI_ERROR (Status)) {
265 //
266 // NOTE: To allow passing in gST here, any library instance having a destructor
267 // must depend on EfiDriverLib
268 //
269 }
270
271 //
272 // Return the status from the driver specific unload handler
273 //
274 return Status;
275 }
276
277 EFI_DRIVER_ENTRY_POINT (_ModuleEntryPoint);
278
279 //
280 // Module Entry Point
281 //
282 #ifdef __EDKII_GLUE_MODULE_ENTRY_POINT__
283 EFI_STATUS
284 EFIAPI
285 __EDKII_GLUE_MODULE_ENTRY_POINT__ (
286 EFI_HANDLE ImageHandle,
287 EFI_SYSTEM_TABLE *SystemTable
288 );
289 #endif
290
291 /**
292 Enrty point to DXE SMM Driver.
293
294 @param ImageHandle ImageHandle of the loaded driver.
295 @param SystemTable Pointer to the EFI System Table.
296
297 @retval EFI_SUCCESS One or more of the drivers returned a success code.
298 @retval !EFI_SUCESS The return status from the last driver entry point in the list.
299
300 **/
301 EFI_STATUS
302 EFIAPI
303 _ModuleEntryPoint (
304 IN EFI_HANDLE ImageHandle,
305 IN EFI_SYSTEM_TABLE *SystemTable
306 )
307 {
308 EFI_STATUS Status;
309 EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
310 EFI_SMM_BASE_PROTOCOL *SmmBase;
311 BOOLEAN InSmm;
312 EFI_DEVICE_PATH_PROTOCOL *CompleteFilePath;
313 EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;
314 EFI_HANDLE Handle;
315
316 //
317 // Cache a pointer to the Boot Services Table
318 //
319 mBS = SystemTable->BootServices;
320
321 //
322 // Retrieve the Loaded Image Protocol
323 //
324 Status = mBS->HandleProtocol (
325 ImageHandle,
326 &gEfiLoadedImageProtocolGuid,
327 (VOID*)&LoadedImage
328 );
329 ASSERT_EFI_ERROR (Status);
330
331 //
332 // Retrieve SMM Base Protocol
333 //
334 Status = mBS->LocateProtocol (
335 &gEfiSmmBaseProtocolGuid,
336 NULL,
337 (VOID **) &SmmBase
338 );
339 ASSERT_EFI_ERROR (Status);
340
341 //
342 // Check to see if we are already in SMM
343 //
344 SmmBase->InSmm (SmmBase, &InSmm);
345
346 //
347 //
348 //
349 if (!InSmm) {
350 //
351 // Retrieve the Device Path Protocol from the DeviceHandle tha this driver was loaded from
352 //
353 Status = mBS->HandleProtocol (
354 LoadedImage->DeviceHandle,
355 &gEfiDevicePathProtocolGuid,
356 (VOID*)&ImageDevicePath
357 );
358 ASSERT_EFI_ERROR (Status);
359
360 //
361 // Build the full device path to the currently execuing image
362 //
363 CompleteFilePath = SmmAppendDevicePath (ImageDevicePath, LoadedImage->FilePath);
364
365 //
366 // Load the image in memory to SMRAM; it will automatically generate the
367 // SMI.
368 //
369 Status = SmmBase->Register (SmmBase, CompleteFilePath, NULL, 0, &Handle, FALSE);
370 ASSERT_EFI_ERROR (Status);
371 return Status;
372 }
373
374 //
375 // Call constructor for all libraries
376 //
377 ProcessLibraryConstructorList (ImageHandle, SystemTable);
378
379 //
380 // Install the unload handler
381 //
382 Status = mBS->HandleProtocol (
383 ImageHandle,
384 &gEfiLoadedImageProtocolGuid,
385 (VOID **)&LoadedImage
386 );
387 ASSERT_EFI_ERROR (Status);
388 LoadedImage->Unload = _DriverUnloadHandler;
389
390 //
391 // Call the list of driver entry points
392 //
393 #ifdef __EDKII_GLUE_MODULE_ENTRY_POINT__
394 Status = (__EDKII_GLUE_MODULE_ENTRY_POINT__ (ImageHandle, SystemTable));
395 #else
396 Status = EFI_SUCCESS;
397 #endif
398
399 if (EFI_ERROR (Status)) {
400 ProcessLibraryDestructorList (ImageHandle, SystemTable);
401 }
402
403 return Status;
404 }
405
406 /**
407 Enrty point wrapper of DXE SMM Driver.
408
409 @param ImageHandle ImageHandle of the loaded driver.
410 @param SystemTable Pointer to the EFI System Table.
411
412 @retval EFI_SUCCESS One or more of the drivers returned a success code.
413 @retval !EFI_SUCESS The return status from the last driver entry point in the list.
414
415 **/
416 EFI_STATUS
417 EFIAPI
418 EfiMain (
419 IN EFI_HANDLE ImageHandle,
420 IN EFI_SYSTEM_TABLE *SystemTable
421 )
422 {
423 return _ModuleEntryPoint (ImageHandle, SystemTable);
424 }
425
426 //
427 // Guids not present in R8.6 code base
428 //
429
430 //
431 // Protocol/Arch Protocol GUID globals
432 //
433 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gUefiDriverConfigurationProtocolGuid = { 0xbfd7dc1d, 0x24f1, 0x40d9, { 0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe } };
434 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gUefiDriverDiagnosticsProtocolGuid = { 0x4d330321, 0x025f, 0x4aac, { 0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63 } };
435 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiArpProtocolGuid = { 0xf4b427bb, 0xba21, 0x4f16, { 0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c } };
436 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiArpServiceBindingProtocolGuid = { 0xf44c00ee, 0x1f2c, 0x4a00, { 0xaa, 0x09, 0x1c, 0x9f, 0x3e, 0x08, 0x00, 0xa3 } };
437 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDhcp4ProtocolGuid = { 0x8a219718, 0x4ef5, 0x4761, { 0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56 } };
438 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDhcp4ServiceBindingProtocolGuid = { 0x9d9a39d8, 0xbd42, 0x4a73, { 0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80 } };
439 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIp4ProtocolGuid = { 0x41d94cd2, 0x35b6, 0x455a, { 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd } };
440 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIp4ServiceBindingProtocolGuid = { 0xc51711e7, 0xb4bf, 0x404a, { 0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4 } };
441 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIp4ConfigProtocolGuid = { 0x3b95aa31, 0x3793, 0x434b, { 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e } };
442 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiManagedNetworkProtocolGuid = { 0x3b95aa31, 0x3793, 0x434b, { 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e } };
443 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid = { 0xf36ff770, 0xa7e1, 0x42cf, { 0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c } };
444 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiMtftp4ProtocolGuid = { 0x3ad9df29, 0x4501, 0x478d, { 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3 } };
445 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiMtftp4ServiceBindingProtocolGuid = { 0x2FE800BE, 0x8F01, 0x4aa6, { 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F } };
446 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiTcp4ProtocolGuid = { 0x65530BC7, 0xA359, 0x410f, { 0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62 } };
447 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiTcp4ServiceBindingProtocolGuid = { 0x00720665, 0x67EB, 0x4a99, { 0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9 } };
448 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiUdp4ProtocolGuid = { 0x3ad9df29, 0x4501, 0x478d, { 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3 } };
449 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiUdp4ServiceBindingProtocolGuid = { 0x83f01464, 0x99bd, 0x45e5, { 0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6 } };
450 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAuthenticationInfoProtocolGuid = { 0x7671d9d0, 0x53db, 0x4173, { 0xaa, 0x69, 0x23, 0x27, 0xf2, 0x1f, 0x0b, 0xc7 } };
451 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDevicePathFromTextProtocolGuid = { 0x5c99a21, 0xc70f, 0x4ad2, { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } };
452 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDevicePathToTextProtocolGuid = { 0x8b843e20, 0x8132, 0x4852, { 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } };
453 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDevicePathUtilitiesProtocolGuid = { 0x379be4e, 0xd706, 0x437d, { 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4 } };
454 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashProtocolGuid = { 0xc5184932, 0xdba5, 0x46db, { 0xa5, 0xba, 0xcc, 0x0b, 0xda, 0x9c, 0x14, 0x35 } };
455 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashServiceBindingProtocolGuid = { 0x42881c98, 0xa4f3, 0x44b0, { 0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd } };
456 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIScsiInitiatorNameProtocolGuid = { 0xa6a72875, 0x2962, 0x4c18, { 0x9f, 0x46, 0x8d, 0xa6, 0x44, 0xcc, 0xfe, 0x00 } };
457 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiExtScsiPassThruProtocolGuid = { 0x1d3de7f0, 0x0807, 0x424f, { 0xaa, 0x69, 0x11, 0xa5, 0x4e, 0x19, 0xa4, 0x6f } };
458 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiTapeIoProtocolGuid = { 0x1e93e633, 0xd65a, 0x459e, { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } };
459 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiUsb2HcProtocolGuid = { 0x3e745226, 0x9818, 0x45b6, { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } };
460
461 //
462 // PPI GUID globals
463 //
464
465 //
466 // GUID globals
467 //
468 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHobMemoryAllocBspStoreGuid = { 0x564b33cd, 0xc92a, 0x4593, { 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22 } };
469 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHobMemoryAllocStackGuid = { 0x4ed4bf27, 0x4092, 0x42e9, { 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x00, 0xc9, 0xbd } };
470 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHobMemoryAllocModuleGuid = { 0xf8e21975, 0x0899, 0x4f58, { 0xa4, 0xbe, 0x55, 0x25, 0xa9, 0xc6, 0xd7, 0x7a } };
471 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAuthenticationChapRadiusGuid = { 0xd6062b50, 0x15ca, 0x11da, { 0x92, 0x19, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } };
472 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAuthenticationChapLocalGuid = { 0xc280c73e, 0x15ca, 0x11da, { 0xb0, 0xca, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } };
473 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha1Guid = { 0x2ae9d80f, 0x3fb2, 0x4095, { 0xb7, 0xb1, 0xe9, 0x31, 0x57, 0xb9, 0x46, 0xb6 } };
474 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha224Guid = { 0x8df01a06, 0x9bd5, 0x4bf7, { 0xb0, 0x21, 0xdb, 0x4f, 0xd9, 0xcc, 0xf4, 0x5b } };
475 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha256Guid = { 0x51aa59de, 0xfdf2, 0x4ea3, { 0xbc, 0x63, 0x87, 0x5f, 0xb7, 0x84, 0x2e, 0xe9 } };
476 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha384Guid = { 0xefa96432, 0xde33, 0x4dd2, { 0xae, 0xe6, 0x32, 0x8c, 0x33, 0xdf, 0x77, 0x7a } };
477 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha512Guid = { 0xcaa4381e, 0x750c, 0x4770, { 0xb8, 0x70, 0x7a, 0x23, 0xb4, 0xe4, 0x21, 0x30 } };
478 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmMD5Guid = { 0xaf7c79c, 0x65b5, 0x4319, { 0xb0, 0xae, 0x44, 0xec, 0x48, 0x4e, 0x4a, 0xd7 } };
479 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gBootObjectAuthorizationParmsetGuid = { 0xedd35e31, 0x7b9, 0x11d2, { 0x83, 0xa3, 0x00, 0xa0, 0xc9, 0x1f, 0xad, 0xcf } };
480 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gSmmCommunicateHeaderGuid = { 0xf328e36c, 0x23b6, 0x4a95, { 0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75 } };
481 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiCapsuleGuid = { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 } };
482 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiConfigFileNameGuid = { 0x98B8D59B, 0xE8BA, 0x48EE, { 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB } };