[U-Boot] [RFC] Analyzing data abort in EFI payload
Alexander Graf
agraf at suse.de
Wed Apr 4 09:24:49 UTC 2018
On 28.03.18 14:15, Heinrich Schuchardt wrote:
> I have an EFI payload which causes a data abort exception on arm32:
>
> data abort
> pc : [<79e7afe6>] lr : [<79e7aff5>]
>
>
> reloc pc : [<44f15fe6>] lr : [<44f15ff5>]
>
>
> sp : 7af3a740 ip : 7efb0420 fp : 7af774f8
>
>
> r10: 7af3a7f0 r9 : 7af44ed8 r8 : 7ef9b1d0
>
>
> r7 : 00000000 r6 : 00000000 r5 : 7ef8af21 r4 : 7af774f8
>
>
> r3 : 00000003 r2 : 79f2f040 r1 : 00000000 r0 : 79f2f079
>
>
> Flags: Nzcv IRQs off FIQs off Mode SVC_32
>
>
> Resetting CPU ...
>
>
>
> resetting ...
>
> "reloc pc" is calculated as
> instruction_pointer(regs) - gd->reloc_off
>
> This relocation offset is the one used for U-Boot not the one used for
> the EFI payload.
>
> When a data abort occurs we may have multiple loaded EFI images. For the
> analysis we need the offset, the start address, and the end address for
> each of these. Then we can determine to which image the PC points to and
> via the offset find the assembly instruction in the image file.
>
> Printing this information when an image is started may destroy the
> screen content. Furthermore the screen may be cleared afterwards.
>
> So the most appropriate time for printing the information would be when
> the abort occurs. If the memory is not corrupted we could loop over all
> loaded image handles and retrieve the information from there. We could
> call an efi function for this purpose right after show_regs(pt_regs) in
> arch/arm/lib/interrupts.c.
>
> What is your view on this?
I think it's a great idea.
Alex
More information about the U-Boot
mailing list