mirror of https://github.com/ipxe/ipxe.git
[efi] Do not attempt to use console output after ExitBootServices()
A successful call to ExitBootServices() will result in the EFI console becoming unusable. Ensure that the EFI wrapper produces a complete line of debug output before calling the wrapped ExitBootServices() method, and attempt subsequent debug output only if the call fails. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/522/head
parent
236299baa3
commit
51612b6e69
|
@ -735,11 +735,14 @@ efi_exit_boot_services_wrapper ( EFI_HANDLE image_handle, UINTN map_key ) {
|
||||||
void *retaddr = __builtin_return_address ( 0 );
|
void *retaddr = __builtin_return_address ( 0 );
|
||||||
EFI_STATUS efirc;
|
EFI_STATUS efirc;
|
||||||
|
|
||||||
DBGC ( colour, "ExitBootServices ( %s, %#llx ) ",
|
DBGC ( colour, "ExitBootServices ( %s, %#llx ) -> %p\n",
|
||||||
efi_handle_name ( image_handle ),
|
efi_handle_name ( image_handle ),
|
||||||
( ( unsigned long long ) map_key ) );
|
( ( unsigned long long ) map_key ), retaddr );
|
||||||
efirc = bs->ExitBootServices ( image_handle, map_key );
|
efirc = bs->ExitBootServices ( image_handle, map_key );
|
||||||
DBGC ( colour, "= %s -> %p\n", efi_status ( efirc ), retaddr );
|
if ( efirc != 0 ) {
|
||||||
|
DBGC ( colour, "ExitBootServices ( ... ) = %s -> %p\n",
|
||||||
|
efi_status ( efirc ), retaddr );
|
||||||
|
}
|
||||||
return efirc;
|
return efirc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue