mirror of
				https://gitlab.com/qemu-project/edk2.git
				synced 2025-10-30 07:56:39 +08:00 
			
		
		
		
	NetworkPkg/SnpDxe: Shutdown SnpDxe on BeforeExitBootServices Event.
SnpDxe registers for an ExitBootServices callback and runs the PXE_OPCODE_SHUTDOWN and PXE_OPCODE_STOP commands for any network controllers that the driver is attached to. Register the SnpDxe callback for gEfiEventBeforeExitBootServicesGuid instead of gEfiEventExitBootServicesGuid to ensure the correct ordering: 1. ExitBootServices event 2. Network card shutdown sequence is completed Also, close the event to prevent rerunning the shutdown if multiple ExitBootServices events need to be called by the OS. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
This commit is contained in:
		| @ -32,6 +32,10 @@ SnpNotifyExitBootServices ( | ||||
|   // | ||||
|   PxeShutdown (Snp); | ||||
|   PxeStop (Snp); | ||||
|  | ||||
|   // Since BeforeExitBootServices is run on each call, close event | ||||
|   // to prevent reentry. | ||||
|   gBS->CloseEvent (Event); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @ -655,7 +659,7 @@ SimpleNetworkDriverStart ( | ||||
|                     TPL_CALLBACK, | ||||
|                     SnpNotifyExitBootServices, | ||||
|                     Snp, | ||||
|                     &gEfiEventExitBootServicesGuid, | ||||
|                     &gEfiEventBeforeExitBootServicesGuid, | ||||
|                     &Snp->ExitBootServicesEvent | ||||
|                     ); | ||||
|     if (EFI_ERROR (Status)) { | ||||
|  | ||||
| @ -65,7 +65,7 @@ | ||||
|   NetLib | ||||
|  | ||||
| [Guids] | ||||
|   gEfiEventExitBootServicesGuid                 ## SOMETIMES_CONSUMES ## Event | ||||
|   gEfiEventBeforeExitBootServicesGuid           ## SOMETIMES_CONSUMES ## Event | ||||
|  | ||||
| [Protocols] | ||||
|   gEfiSimpleNetworkProtocolGuid                 ## BY_START | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 joe
					joe