]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/EntryPoints/EdkIIGlueDxeDriverEntryPoint.c
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / EntryPoints / EdkIIGlueDxeDriverEntryPoint.c
1 /*++
2
3 Copyright (c) 2004 - 2007, 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 EdkIIGlueDxeDriverEntryPoint.c
16
17 Abstract:
18
19 DXE Driver entry point template file
20
21 --*/
22
23 #include "EdkIIGlueDxe.h"
24 #include "Common/EdkIIGlueDependencies.h"
25
26 STATIC EFI_EVENT _mDriverExitBootServicesNotifyEvent;
27
28 //
29 // Driver Model related definitions.
30 // LIMITATION: only support one instance of Driver Model protocols per driver.
31 // In case where multiple Driver Model protocols need to be installed in a single driver,
32 // manually edit this file and compile/link the modified file with the driver.
33 //
34
35 #ifdef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__
36 extern EFI_DRIVER_BINDING_PROTOCOL __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__;
37 #endif
38
39 #ifdef __EDKII_GLUE_COMPONENT_NAME_PROTOCOL_INSTANCE__
40 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
41 extern EFI_COMPONENT_NAME2_PROTOCOL __EDKII_GLUE_COMPONENT_NAME_PROTOCOL_INSTANCE__;
42 #else
43 extern EFI_COMPONENT_NAME_PROTOCOL __EDKII_GLUE_COMPONENT_NAME_PROTOCOL_INSTANCE__;
44 #endif
45 #endif
46
47 #ifdef __EDKII_GLUE_DRIVER_CONFIGURATION_PROTOCOL_INSTANCE__
48 extern EFI_DRIVER_CONFIGURATION_PROTOCOL __EDKII_GLUE_DRIVER_CONFIGURATION_PROTOCOL_INSTANCE__;
49 #endif
50
51 #ifdef __EDKII_GLUE_DRIVER_DIAGNOSTICS_PROTOCOL_INSTANCE__
52 extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL __EDKII_GLUE_DRIVER_DIAGNOSTICS_PROTOCOL_INSTANCE__;
53 #endif
54
55 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DRIVER_MODEL_PROTOCOL_LIST _gDriverModelProtocolList[] = {
56 {
57 #ifdef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__
58 &__EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__,
59 #else
60 NULL,
61 #endif
62
63 #ifdef __EDKII_GLUE_COMPONENT_NAME_PROTOCOL_INSTANCE__
64 &__EDKII_GLUE_COMPONENT_NAME_PROTOCOL_INSTANCE__,
65 #else
66 NULL,
67 #endif
68
69 #ifdef __EDKII_GLUE_DRIVER_CONFIGURATION_PROTOCOL_INSTANCE__
70 &__EDKII_GLUE_DRIVER_CONFIGURATION_PROTOCOL_INSTANCE__,
71 #else
72 NULL,
73 #endif
74
75 #ifdef __EDKII_GLUE_DRIVER_DIAGNOSTICS_PROTOCOL_INSTANCE__
76 &__EDKII_GLUE_DRIVER_DIAGNOSTICS_PROTOCOL_INSTANCE__,
77 #else
78 NULL,
79 #endif
80 }
81 };
82
83 //
84 // NOTE: Limitation:
85 // Only one handler for SetVirtualAddressMap Event and ExitBootServices Event each
86 //
87 #ifdef __EDKII_GLUE_SET_VIRTUAL_ADDRESS_MAP_EVENT_HANDLER__
88 VOID
89 __EDKII_GLUE_SET_VIRTUAL_ADDRESS_MAP_EVENT_HANDLER__ (
90 IN EFI_EVENT Event,
91 IN VOID *Context
92 );
93 #endif
94
95 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_EVENT_NOTIFY _gDriverSetVirtualAddressMapEvent[] = {
96 #ifdef __EDKII_GLUE_SET_VIRTUAL_ADDRESS_MAP_EVENT_HANDLER__
97 __EDKII_GLUE_SET_VIRTUAL_ADDRESS_MAP_EVENT_HANDLER__,
98 #endif
99 NULL
100 };
101
102 #ifdef __EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__
103 VOID
104 __EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__ (
105 IN EFI_EVENT Event,
106 IN VOID *Context
107 );
108 #endif
109
110 /**
111 Set AtRuntime flag as TRUE after ExitBootServices
112
113 @param[in] Event The Event that is being processed
114 @param[in] Context Event Context
115 **/
116 VOID
117 EFIAPI
118 RuntimeDriverExitBootServices (
119 IN EFI_EVENT Event,
120 IN VOID *Context
121 );
122
123 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_EVENT_NOTIFY _gDriverExitBootServicesEvent[] = {
124 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
125 //
126 // only Runtime drivers need to link EdkDxeRuntimeDriverLib
127 //
128 RuntimeDriverExitBootServices,
129 #endif
130 #ifdef __EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__
131 __EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__,
132 #endif
133 NULL
134 };
135
136
137 //
138 // Module Unload Handler
139 //
140
141 #ifdef __EDKII_GLUE_MODULE_UNLOAD_HANDLER__
142 EFI_STATUS
143 EFIAPI
144 __EDKII_GLUE_MODULE_UNLOAD_HANDLER__ (
145 EFI_HANDLE ImageHandle
146 );
147 #endif
148
149 EFI_STATUS
150 EFIAPI
151 ProcessModuleUnloadList (
152 EFI_HANDLE ImageHandle
153 )
154 {
155 #ifdef __EDKII_GLUE_MODULE_UNLOAD_HANDLER__
156 return (__EDKII_GLUE_MODULE_UNLOAD_HANDLER__ (ImageHandle));
157 #else
158 return EFI_SUCCESS;
159 #endif
160 }
161
162 #ifdef __EDKII_GLUE_EFI_CALLER_ID_GUID__
163 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiCallerIdGuid = __EDKII_GLUE_EFI_CALLER_ID_GUID__;
164 #endif
165
166 //
167 // Library constructors
168 //
169 VOID
170 ProcessLibraryConstructorList (
171 IN EFI_HANDLE ImageHandle,
172 IN EFI_SYSTEM_TABLE *SystemTable
173 )
174 {
175 //
176 // Declare "Status" if any of the following libraries are used
177 //
178 #if defined(__EDKII_GLUE_DXE_HOB_LIB__) \
179 || defined(__EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__) \
180 || defined(__EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__) \
181 || defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) \
182 || defined(__EDKII_GLUE_DXE_SERVICES_TABLE_LIB__) \
183 || defined(__EDKII_GLUE_DXE_SMBUS_LIB__) \
184 || defined(__EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__) \
185 || defined(__EDKII_GLUE_EDK_DXE_SAL_LIB__) \
186 || defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)
187 EFI_STATUS Status;
188 #endif
189
190 //
191 // EdkII Glue Library Constructors:
192 // NOTE: the constructors must be called according to dependency order
193 //
194 // UefiBootServicesTableLib UefiBootServicesTableLibConstructor()
195 // DxeIoLibCpuIo IoLibConstructor()
196 // DxeSalLib DxeSalLibConstructor(), IPF only
197 // EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()
198 // DxeHobLib HobLibConstructor()
199 // UefiDriverModelLib UefiDriverModelLibConstructor()
200 // DxeSmbusLib SmbusLibConstructor()
201 // DxeServicesTableLib DxeServicesTableLibConstructor()
202 // UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()
203 //
204
205 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
206 Status = UefiBootServicesTableLibConstructor (ImageHandle, SystemTable);
207 ASSERT_EFI_ERROR (Status);
208 #endif
209
210 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
211 Status = IoLibConstructor (ImageHandle, SystemTable);
212 ASSERT_EFI_ERROR (Status);
213 #endif
214
215 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
216 Status = DxeSalLibConstructor(ImageHandle, SystemTable);
217 ASSERT_EFI_ERROR (Status);
218 #endif
219
220 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
221 Status = RuntimeDriverLibConstruct (ImageHandle, SystemTable);
222 ASSERT_EFI_ERROR (Status);
223 #endif
224
225 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
226 Status = UefiRuntimeServicesTableLibConstructor (ImageHandle, SystemTable);
227 ASSERT_EFI_ERROR (Status);
228 #endif
229
230 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
231 Status = UefiDriverModelLibConstructor (ImageHandle, SystemTable);
232 ASSERT_EFI_ERROR (Status);
233 #endif
234
235 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
236 Status = DxeServicesTableLibConstructor (ImageHandle, SystemTable);
237 ASSERT_EFI_ERROR (Status);
238 #endif
239
240 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
241 Status = HobLibConstructor (ImageHandle, SystemTable);
242 ASSERT_EFI_ERROR (Status);
243 #endif
244
245 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
246 Status = SmbusLibConstructor (ImageHandle, SystemTable);
247 ASSERT_EFI_ERROR (Status);
248 #endif
249
250 }
251
252 //
253 // Library Destructors
254 //
255 VOID
256 ProcessLibraryDestructorList (
257 IN EFI_HANDLE ImageHandle,
258 IN EFI_SYSTEM_TABLE *SystemTable
259 )
260 {
261 #if defined (__EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__) || defined (__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__)
262 EFI_STATUS Status;
263 #endif
264
265 //
266 // NOTE: the destructors must be called according to dependency order
267 //
268 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
269 Status = UefiDriverModelLibDestructor (ImageHandle, SystemTable);
270 ASSERT_EFI_ERROR (Status);
271 #endif
272
273 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
274 Status = RuntimeDriverLibDeconstruct (ImageHandle, SystemTable);
275 ASSERT_EFI_ERROR (Status);
276 #endif
277 }
278
279
280 /**
281 Unload function that is registered in the LoadImage protocol. It un-installs
282 protocols produced and deallocates pool used by the driver. Called by the core
283 when unloading the driver.
284
285 @param ImageHandle
286
287 @retval EFI_SUCCESS
288
289 **/
290 EFI_STATUS
291 EFIAPI
292 _DriverUnloadHandler (
293 EFI_HANDLE ImageHandle
294 )
295 {
296 EFI_STATUS Status;
297
298 //
299 // If an UnloadImage() handler is specified, then call it
300 //
301 Status = ProcessModuleUnloadList (ImageHandle);
302
303 //
304 // If the driver specific unload handler does not return an error, then call all of the
305 // library destructors. If the unload handler returned an error, then the driver can not be
306 // unloaded, and the library destructors should not be called
307 //
308 if (!EFI_ERROR (Status)) {
309 //
310 // Close our ExitBootServices () notify function
311 //
312 if (_gDriverExitBootServicesEvent[0] != NULL) {
313 ASSERT (gBS != NULL);
314 Status = gBS->CloseEvent (_mDriverExitBootServicesNotifyEvent);
315 ASSERT_EFI_ERROR (Status);
316 }
317
318 //
319 // NOTE: To allow passing in gST here, any library instance having a destructor
320 // must depend on EfiDriverLib
321 //
322 ProcessLibraryDestructorList (ImageHandle, gST);
323 }
324
325 //
326 // Return the status from the driver specific unload handler
327 //
328 return Status;
329 }
330
331 VOID
332 EFIAPI
333 _DriverExitBootServices (
334 IN EFI_EVENT Event,
335 IN VOID *Context
336 )
337 /*++
338
339 Routine Description:
340
341 Set AtRuntime flag as TRUE after ExitBootServices
342
343 Arguments:
344
345 Event - The Event that is being processed
346
347 Context - Event Context
348
349 Returns:
350
351 None
352
353 --*/
354 {
355 EFI_EVENT_NOTIFY ChildNotifyEventHandler;
356 UINTN Index;
357
358 for (Index = 0; _gDriverExitBootServicesEvent[Index] != NULL; Index++) {
359 ChildNotifyEventHandler = _gDriverExitBootServicesEvent[Index];
360 ChildNotifyEventHandler (Event, NULL);
361 }
362 }
363
364 EFI_DRIVER_ENTRY_POINT (_ModuleEntryPoint);
365
366 //
367 // Module Entry Point
368 //
369 #ifdef __EDKII_GLUE_MODULE_ENTRY_POINT__
370 EFI_STATUS
371 EFIAPI
372 __EDKII_GLUE_MODULE_ENTRY_POINT__ (
373 EFI_HANDLE ImageHandle,
374 EFI_SYSTEM_TABLE *SystemTable
375 );
376 #endif
377
378 /**
379 Enrty point to DXE Driver.
380
381 @param ImageHandle ImageHandle of the loaded driver.
382 @param SystemTable Pointer to the EFI System Table.
383
384 @retval EFI_SUCCESS One or more of the drivers returned a success code.
385 @retval !EFI_SUCESS The return status from the last driver entry point in the list.
386
387 **/
388 EFI_STATUS
389 EFIAPI
390 _ModuleEntryPoint (
391 IN EFI_HANDLE ImageHandle,
392 IN EFI_SYSTEM_TABLE *SystemTable
393 )
394 {
395 EFI_STATUS Status;
396 EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
397
398 // if (_gUefiDriverRevision != 0) {
399 // //
400 // // Make sure that the EFI/UEFI spec revision of the platform is >= EFI/UEFI spec revision of the driver
401 // //
402 // if (SystemTable->Hdr.Revision < _gUefiDriverRevision) {
403 // return EFI_INCOMPATIBLE_VERSION;
404 // }
405 // }
406
407 // DEBUG ((EFI_D_ERROR, "EdkII Glue Driver Entry - 0\n"));
408
409 //
410 // Call constructor for all libraries
411 //
412 ProcessLibraryConstructorList (ImageHandle, SystemTable);
413
414 //
415 // Register our ExitBootServices () notify function
416 //
417 if (_gDriverExitBootServicesEvent[0] != NULL) {
418 Status = SystemTable->BootServices->CreateEvent (
419 EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES,
420 EFI_TPL_NOTIFY,
421 _DriverExitBootServices,
422 NULL,
423 &_mDriverExitBootServicesNotifyEvent
424 );
425
426 ASSERT_EFI_ERROR (Status);
427 }
428
429 //
430 // Install unload handler...
431 //
432 Status = SystemTable->BootServices->HandleProtocol (
433 ImageHandle,
434 &gEfiLoadedImageProtocolGuid,
435 (VOID **)&LoadedImage
436 );
437 ASSERT_EFI_ERROR (Status);
438 LoadedImage->Unload = _DriverUnloadHandler;
439
440 //
441 // Call the driver entry point
442 //
443 #ifdef __EDKII_GLUE_MODULE_ENTRY_POINT__
444 Status = (__EDKII_GLUE_MODULE_ENTRY_POINT__ (ImageHandle, SystemTable));
445 #else
446 Status = EFI_SUCCESS;
447 #endif
448
449 //
450 // If all of the drivers returned errors, then invoke all of the library destructors
451 //
452 if (EFI_ERROR (Status)) {
453 //
454 // Close our ExitBootServices () notify function
455 //
456 if (_gDriverExitBootServicesEvent[0] != NULL) {
457 EFI_STATUS CloseEventStatus;
458 CloseEventStatus = SystemTable->BootServices->CloseEvent (_mDriverExitBootServicesNotifyEvent);
459 ASSERT_EFI_ERROR (CloseEventStatus);
460 }
461
462 ProcessLibraryDestructorList (ImageHandle, SystemTable);
463 }
464
465 //
466 // Return the cummalative return status code from all of the driver entry points
467 //
468 return Status;
469 }
470
471
472 /**
473 Enrty point wrapper of DXE Driver.
474
475 @param ImageHandle ImageHandle of the loaded driver.
476 @param SystemTable Pointer to the EFI System Table.
477
478 @retval EFI_SUCCESS One or more of the drivers returned a success code.
479 @retval !EFI_SUCESS The return status from the last driver entry point in the list.
480
481 EBC build envrionment has /D $(IMAGE_ENTRY_POINT)=EfiMain which overrides what GlueLib
482 defines: /D IMAGE_ENTRY_POINT=_ModuleEntryPoint, so _ModuleEntryPoint will be replaced with
483 EfiMain thus the function below isn't needed in EBC envrionment.
484
485 **/
486 #ifndef MDE_CPU_EBC
487 EFI_STATUS
488 EFIAPI
489 EfiMain (
490 IN EFI_HANDLE ImageHandle,
491 IN EFI_SYSTEM_TABLE *SystemTable
492 )
493 {
494 return _ModuleEntryPoint (ImageHandle, SystemTable);
495 }
496 #endif
497
498 //
499 // Guids not present in R8.6 code base
500 //
501
502 //
503 // Protocol/Arch Protocol GUID globals
504 //
505 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gUefiDriverConfigurationProtocolGuid = { 0xbfd7dc1d, 0x24f1, 0x40d9, { 0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe } };
506 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gUefiDriverDiagnosticsProtocolGuid = { 0x4d330321, 0x025f, 0x4aac, { 0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63 } };
507 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiArpProtocolGuid = { 0xf4b427bb, 0xba21, 0x4f16, { 0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c } };
508 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiArpServiceBindingProtocolGuid = { 0xf44c00ee, 0x1f2c, 0x4a00, { 0xaa, 0x09, 0x1c, 0x9f, 0x3e, 0x08, 0x00, 0xa3 } };
509 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDhcp4ProtocolGuid = { 0x8a219718, 0x4ef5, 0x4761, { 0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56 } };
510 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDhcp4ServiceBindingProtocolGuid = { 0x9d9a39d8, 0xbd42, 0x4a73, { 0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80 } };
511 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIp4ProtocolGuid = { 0x41d94cd2, 0x35b6, 0x455a, { 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd } };
512 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIp4ServiceBindingProtocolGuid = { 0xc51711e7, 0xb4bf, 0x404a, { 0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4 } };
513 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIp4ConfigProtocolGuid = { 0x3b95aa31, 0x3793, 0x434b, { 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e } };
514 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiManagedNetworkProtocolGuid = { 0x3b95aa31, 0x3793, 0x434b, { 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e } };
515 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid = { 0xf36ff770, 0xa7e1, 0x42cf, { 0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c } };
516 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiMtftp4ProtocolGuid = { 0x3ad9df29, 0x4501, 0x478d, { 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3 } };
517 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiMtftp4ServiceBindingProtocolGuid = { 0x2FE800BE, 0x8F01, 0x4aa6, { 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F } };
518 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiTcp4ProtocolGuid = { 0x65530BC7, 0xA359, 0x410f, { 0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62 } };
519 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiTcp4ServiceBindingProtocolGuid = { 0x00720665, 0x67EB, 0x4a99, { 0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9 } };
520 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiUdp4ProtocolGuid = { 0x3ad9df29, 0x4501, 0x478d, { 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3 } };
521 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiUdp4ServiceBindingProtocolGuid = { 0x83f01464, 0x99bd, 0x45e5, { 0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6 } };
522 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAuthenticationInfoProtocolGuid = { 0x7671d9d0, 0x53db, 0x4173, { 0xaa, 0x69, 0x23, 0x27, 0xf2, 0x1f, 0x0b, 0xc7 } };
523 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDevicePathFromTextProtocolGuid = { 0x5c99a21, 0xc70f, 0x4ad2, { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } };
524 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDevicePathToTextProtocolGuid = { 0x8b843e20, 0x8132, 0x4852, { 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } };
525 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiDevicePathUtilitiesProtocolGuid = { 0x379be4e, 0xd706, 0x437d, { 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4 } };
526 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashProtocolGuid = { 0xc5184932, 0xdba5, 0x46db, { 0xa5, 0xba, 0xcc, 0x0b, 0xda, 0x9c, 0x14, 0x35 } };
527 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashServiceBindingProtocolGuid = { 0x42881c98, 0xa4f3, 0x44b0, { 0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd } };
528 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiIScsiInitiatorNameProtocolGuid = { 0xa6a72875, 0x2962, 0x4c18, { 0x9f, 0x46, 0x8d, 0xa6, 0x44, 0xcc, 0xfe, 0x00 } };
529 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiExtScsiPassThruProtocolGuid = { 0x1d3de7f0, 0x0807, 0x424f, { 0xaa, 0x69, 0x11, 0xa5, 0x4e, 0x19, 0xa4, 0x6f } };
530 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiTapeIoProtocolGuid = { 0x1e93e633, 0xd65a, 0x459e, { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } };
531 #if (EFI_SPECIFICATION_VERSION < 0x00020000)
532 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiUsb2HcProtocolGuid = { 0x3e745226, 0x9818, 0x45b6, { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } };
533 #endif
534
535 //
536 // PPI GUID globals
537 //
538
539 //
540 // GUID globals
541 //
542 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHobMemoryAllocBspStoreGuid = { 0x564b33cd, 0xc92a, 0x4593, { 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22 } };
543 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHobMemoryAllocStackGuid = { 0x4ed4bf27, 0x4092, 0x42e9, { 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x00, 0xc9, 0xbd } };
544 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHobMemoryAllocModuleGuid = { 0xf8e21975, 0x0899, 0x4f58, { 0xa4, 0xbe, 0x55, 0x25, 0xa9, 0xc6, 0xd7, 0x7a } };
545 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAuthenticationChapRadiusGuid = { 0xd6062b50, 0x15ca, 0x11da, { 0x92, 0x19, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } };
546 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAuthenticationChapLocalGuid = { 0xc280c73e, 0x15ca, 0x11da, { 0xb0, 0xca, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } };
547 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha1Guid = { 0x2ae9d80f, 0x3fb2, 0x4095, { 0xb7, 0xb1, 0xe9, 0x31, 0x57, 0xb9, 0x46, 0xb6 } };
548 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha224Guid = { 0x8df01a06, 0x9bd5, 0x4bf7, { 0xb0, 0x21, 0xdb, 0x4f, 0xd9, 0xcc, 0xf4, 0x5b } };
549 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha256Guid = { 0x51aa59de, 0xfdf2, 0x4ea3, { 0xbc, 0x63, 0x87, 0x5f, 0xb7, 0x84, 0x2e, 0xe9 } };
550 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha384Guid = { 0xefa96432, 0xde33, 0x4dd2, { 0xae, 0xe6, 0x32, 0x8c, 0x33, 0xdf, 0x77, 0x7a } };
551 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmSha512Guid = { 0xcaa4381e, 0x750c, 0x4770, { 0xb8, 0x70, 0x7a, 0x23, 0xb4, 0xe4, 0x21, 0x30 } };
552 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiHashAlgorithmMD5Guid = { 0xaf7c79c, 0x65b5, 0x4319, { 0xb0, 0xae, 0x44, 0xec, 0x48, 0x4e, 0x4a, 0xd7 } };
553 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gBootObjectAuthorizationParmsetGuid = { 0xedd35e31, 0x7b9, 0x11d2, { 0x83, 0xa3, 0x00, 0xa0, 0xc9, 0x1f, 0xad, 0xcf } };
554 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gSmmCommunicateHeaderGuid = { 0xf328e36c, 0x23b6, 0x4a95, { 0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75 } };
555 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiCapsuleGuid = { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 } };
556 GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiConfigFileNameGuid = { 0x98B8D59B, 0xE8BA, 0x48EE, { 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB } };