debugging crash for arm64

Joakim Tjernlund Joakim.Tjernlund at infinera.com
Wed Dec 8 12:49:13 CET 2021


Just had the same and you are probably missing to map that mem area to the MMU. grep for PTE_BLOCK_MEMTYPE in board
and you will see how to.
That said, I think the error msg in u-boot can be a bit better, some SEGV msg perhaps.

 Jocke  

________________________________________
From: U-Boot <u-boot-bounces at lists.denx.de> on behalf of Frank Wunderlich <frank-w at public-files.de>
Sent: 08 December 2021 12:12
To: u-boot at lists.denx.de
Subject: debugging crash for arm64

Hi,

i got a crash on uboot while running reset-command in rk3568 board (bananapi-r2 pro, currently not in upstream).

maybe a callback is missing (e.g. reset_cpu())??

i tried to analyse it using the documentation:
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fu-boot.readthedocs.io%2Fen%2Flatest%2Fdevelop%2Fcrash_dumps.html&data=04%7C01%7Cjoakim.tjernlund%40infinera.com%7C59463e6ea58d41f0ca9008d9ba3b9a99%7C285643de5f5b4b03a1530ae2dc8aaf77%7C1%7C1%7C637745587442544318%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=2PrM0CxcISTGINRz2DvLtMXB0UWow0x%2Bl0y58JkpkK0%3D&reserved=0

Resetting CPU ...

resetting ...
"Synchronous Abort" handler, esr 0x96000045
elr: 0000000000a25f78 lr : 0000000000a25f48 (reloc)
elr: 000000007ff94f78 lr : 000000007ff94f48
x0 : 00000000fdd20000 x1 : 0000000014000001
x2 : 000000000000fdb9 x3 : 000000007df5cd48
x4 : 000000007df4fe88 x5 : 000000007df5c710
x6 : 000000000000001a x7 : 000000007df459f0
x8 : 0000000000000001 x9 : 000000000000000c
x10: 00000000000186a0 x11: 00000000ffffffd0
x12: 0000000000000010 x13: 000000000001869f
x14: 000000007ff70158 x15: 0000000000000021
x16: 000000007ff94f2c x17: 0000000000000000
x18: 000000007df4fdd0 x19: 0000000000000000
x20: 0000000000000001 x21: 0000000000000000
x22: 000000007df5ddd0 x23: 0000000000000001
x24: 000000007ffe8800 x25: 0000000000000000
x26: 0000000000000000 x27: 0000000000000000
x28: 000000007df5e980 x29: 000000007df45990

Code: d65f03c0 d5033fbf b9400661 529d9502 (b8206822)

$ echo 'Code: d65f03c0 d5033fbf b9400661 529d9502 (b8206822)' |   CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 scripts/decodecode
Code: d65f03c0 d5033fbf b9400661 529d9502 (b8206822)
All code
========
   0:   d65f03c0        ret
   4:   d5033fbf        dmb     sy
   8:   b9400661        ldr     w1, [x19, #4]
   c:   529d9502        mov     w2, #0xeca8                     // #60584
  10:*  b8206822        str     w2, [x1, x0]            <-- trapping instruction

Code starting with the faulting instruction
===========================================
   0:   b8206822        str     w2, [x1, x0]


now i'm here

"Now lets use the locations provided by the elr and lr registers after subtracting the relocation offset to find out where in the code the crash occurred and from where it was invoked."

does that means that i have to subtract values of first 2 lines of trace?

0x7ff94f78 - 0x00a25f78 = 0x7F56F000

"File u-boot.map contains the memory layout of the U-Boot binary. Here we find these lines:"

this is not clear enough for me too...i did not found 0x7F56F000 in the file.

i expect to do anything with the address in the disassembled code (0xb8206822), but i do not know what :p

i've uploaded the matching u-boot.map and u-boot.dbg (output of objdump) here:

https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdrive.google.com%2Fdrive%2Ffolders%2F10rJbjWNdkYTA_pjnfXEADIZO-7yo4ZhC%3Fusp%3Dsharing&data=04%7C01%7Cjoakim.tjernlund%40infinera.com%7C59463e6ea58d41f0ca9008d9ba3b9a99%7C285643de5f5b4b03a1530ae2dc8aaf77%7C1%7C1%7C637745587442544318%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=ZTv1TcijNfXF7Ft2TG0hcw0MGTyFQvF9X2XeWlO2gxk%3D&reserved=0

regards Frank



More information about the U-Boot mailing list