mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-26 06:30:39 +00:00
x86: show UEFI images involved in crash
If a crash occurs, show the loaded UEFI images to facilitate analysis. This is an example output: => bootefi 0x1000000 Found 0 disks Hello world of bugs! Invalid Opcode (Undefined Opcode) EIP: 0010:[<06ceb06e>] EFLAGS: 00010206 Original EIP :[<fec9906e>] EAX: 00000000 EBX: 06cec000 ECX: 00000fd0 EDX: 00000001 ESI: 06ced18a EDI: 07d0fe10 EBP: 07fe27a0 ESP: 07d0fde0 DS: 0018 ES: 0018 FS: 0020 GS: 0018 SS: 0018 CR0: 00000033 CR2: 00000000 CR3: 00000000 CR4: 00000000 DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 DR6: ffff0ff0 DR7: 00000400 Stack: 0x07d0fde8 : 0x00000000 0x07d0fde4 : 0x06ced040 --->0x07d0fde0 : 0x07fe27a0 0x07d0fddc : 0x00010206 0x07d0fdd8 : 0x00000010 0x07d0fdd4 : 0x06ceb06e UEFI image [0x06cea000:0x06cf0fff] pc=0x106e '/bug-i386.efi' ### ERROR ### Please RESET the board ### With the additional information provided by this patch we know that the problem occurred 0x106e after the load address of bug-i386.efi. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
5a8558053d
commit
74b76357df
1 changed files with 14 additions and 0 deletions
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <efi_loader.h>
|
||||
#include <asm/control_regs.h>
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/interrupt.h>
|
||||
|
@ -64,6 +65,18 @@ static char *exceptions[] = {
|
|||
"Reserved"
|
||||
};
|
||||
|
||||
/**
|
||||
* show_efi_loaded_images() - show loaded UEFI images
|
||||
*
|
||||
* List all loaded UEFI images.
|
||||
*
|
||||
* @eip: instruction pointer
|
||||
*/
|
||||
static void show_efi_loaded_images(uintptr_t eip)
|
||||
{
|
||||
efi_print_image_infos((void *)eip);
|
||||
}
|
||||
|
||||
static void dump_regs(struct irq_regs *regs)
|
||||
{
|
||||
unsigned long cs, eip, eflags;
|
||||
|
@ -144,6 +157,7 @@ static void dump_regs(struct irq_regs *regs)
|
|||
printf("0x%8.8lx : 0x%8.8lx\n", sp, (ulong)readl(sp));
|
||||
sp -= 4;
|
||||
}
|
||||
show_efi_loaded_images(eip);
|
||||
}
|
||||
|
||||
static void do_exception(struct irq_regs *regs)
|
||||
|
|
Loading…
Reference in a new issue