62 lines
2.7 KiB
Diff
62 lines
2.7 KiB
Diff
|
# Commit ebbb51dc8c1790e5187442a808003298b6796762
|
||
|
# Date 2014-06-16 11:52:34 +0200
|
||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||
|
x86/EFI: improve boot time diagnostics
|
||
|
|
||
|
To aid analysis of eventual errors, print EFI status codes with error
|
||
|
messages where available. Also remove a case where the status gets
|
||
|
stored into a local variable without being used examined (which mis-
|
||
|
guided me to add an error check there in try 1 of this patch).
|
||
|
|
||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||
|
|
||
|
--- a/xen/arch/x86/efi/boot.c
|
||
|
+++ b/xen/arch/x86/efi/boot.c
|
||
|
@@ -344,11 +344,12 @@ static EFI_FILE_HANDLE __init get_parent
|
||
|
ret = efi_bs->HandleProtocol(loaded_image->DeviceHandle,
|
||
|
&fs_protocol, (void **)&fio);
|
||
|
if ( EFI_ERROR(ret) )
|
||
|
- blexit(L"Couldn't obtain the File System Protocol Interface");
|
||
|
+ PrintErrMesg(L"Couldn't obtain the File System Protocol Interface",
|
||
|
+ ret);
|
||
|
ret = fio->OpenVolume(fio, &dir_handle);
|
||
|
} while ( ret == EFI_MEDIA_CHANGED );
|
||
|
if ( ret != EFI_SUCCESS )
|
||
|
- blexit(L"OpenVolume failure");
|
||
|
+ PrintErrMesg(L"OpenVolume failure", ret);
|
||
|
|
||
|
#define buffer ((CHAR16 *)keyhandler_scratch)
|
||
|
#define BUFFERSIZE sizeof(keyhandler_scratch)
|
||
|
@@ -967,8 +968,8 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SY
|
||
|
|
||
|
if ( !EFI_ERROR(efi_bs->LocateProtocol(&shim_lock_guid, NULL,
|
||
|
(void **)&shim_lock)) &&
|
||
|
- shim_lock->Verify(kernel.ptr, kernel.size) != EFI_SUCCESS )
|
||
|
- blexit(L"Dom0 kernel image could not be verified.");
|
||
|
+ (status = shim_lock->Verify(kernel.ptr, kernel.size)) != EFI_SUCCESS )
|
||
|
+ PrintErrMesg(L"Dom0 kernel image could not be verified", status);
|
||
|
|
||
|
name.s = get_value(&cfg, section.s, "ramdisk");
|
||
|
if ( name.s )
|
||
|
@@ -1379,8 +1380,8 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SY
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- status = efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
|
||
|
- &efi_mdesc_size, &mdesc_ver);
|
||
|
+ efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
|
||
|
+ &efi_mdesc_size, &mdesc_ver);
|
||
|
mbi.mem_upper -= efi_memmap_size;
|
||
|
mbi.mem_upper &= -__alignof__(EFI_MEMORY_DESCRIPTOR);
|
||
|
if ( mbi.mem_upper < xen_phys_start )
|
||
|
@@ -1389,7 +1390,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SY
|
||
|
status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
|
||
|
&efi_mdesc_size, &mdesc_ver);
|
||
|
if ( EFI_ERROR(status) )
|
||
|
- blexit(L"Cannot obtain memory map");
|
||
|
+ PrintErrMesg(L"Cannot obtain memory map", status);
|
||
|
|
||
|
/* Populate E820 table and check trampoline area availability. */
|
||
|
e = e820map - 1;
|