[ipxe-devel] problem to run ipxe from u-boot on arm64/nvidia jetson tx2
Sergii Nedosiekov
sg at nedosekoff.kiev.ua
Sun Nov 24 14:09:46 UTC 2019
Hi!
As a hw platform to run iPXE I using nVidia jetson devboard with arm64 cpu
u-boot is a part of flow in this board so I want to load iPXE efi app
and run it:
I have build IPXE efi app using vi this make args:
make bin-arm64-efi/snp.efi -j6
and then in u-boot have load from tftp:
Tegra186 (P2771-0000-500) # tftp b0000000 192.168.1.1:snp.efi
ethernet at 2490000 Waiting for PHY auto negotiation to complete...... done
Using ethernet at 2490000 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.100
Filename 'snp.efi'.
Load address: 0xb0000000
Loading: ###########
28.3 KiB/s
done
Bytes transferred = 148992 (24600 hex)
after this I calling bootefi:
Tegra186 (P2771-0000-500) # bootefi b0000000 80000000
## Starting EFI application at 0xb0000000 ...
efi_load_pe:132 arm64 arch
efi_load_pe:136 image size 0xa5620
efi_load_pe:138 efi realoc 0xfea88000
efi_load_pe:146 AddressOfEntryPoint 0x57c4
efi_load_pe:147 entry 0xfea8d7c4
efi_load_pe:177 Load sections into RAM
efi_load_pe:189 Run through relocations
efi_load_pe:193 Flush cache
efi_load_pe:205 retunr entry 0xfea8d7c4
Scanning disks on mmc...
MMC: no card present
MMC Device 2 not found
MMC Device 3 not found
Found 1 disks
do_bootefi_exec:216 set jump to 0xfff99e08
do_bootefi_exec:223 Jumping to 0xfea8d7c4
do_bootefi_exec:225 first command to 0xfea8d7c4: a9017bf5a9be53f3
do_bootefi_exec:226 second command to 0xfea8d7cc: d3481c134b0003e0
do_bootefi_exec:227 third command to 0xfea8d7d4: a8c253f3a9417bf5
"Synchronous Abort" handler, esr 0x02000000
ELR: fea89758
LR: fea8d7d4
x0 : 00000000fff99da0 x1 : 00000000fff9f5c8
x2 : 00000000feb2c000 x3 : 0000000003100000
x4 : 0000000000000000 x5 : 0000000000000035
x6 : 00000000fff8663d x7 : 000000000000000f
x8 : 000000000000000e x9 : 0000000000000008
x10: 00000000ffb2d4a2 x11: 00000000ffffffff
x12: 00000000ffffffff x13: 00000000fff71d00
x14: 0000000080000000 x15: 00000000fffed71c
x16: 0000000000004030 x17: 0000000100000000
x18: 00000000ffb30de0 x19: 00000000fff9f5c8
x20: 00000000b0000000 x21: 00000000fff99da0
x22: 00000000ffb397b0 x23: 00000000feb2c000
x24: 0000000000000003 x25: 0000000000000000
x26: 00000000fff99da0 x27: 00000000fea8d7c4
x28: 0000000000000000 x29: 00000000ffb2dd50
all before printf I have add in u-boot bootefi handler to understad
what is going wrong.
I have calculate offsets and exception have been occurred:
ELR: fea89758 -> 1758
LR: fea8d7d4 -> 57d4
0000000000001744 <efi_init>:
1744:<----->a9b853f3 <----->stp<--->x19, x20, [sp, #-128]!
1748:<----->f0000502 <----->adrp<-->x2, a4000 <heap+0x7f560>
174c:<----->a90263f7 <----->stp<--->x23, x24, [sp, #32]
1750:<----->f0000517 <----->adrp<-->x23, a4000 <heap+0x7f560>
1754:<----->f9061440 <----->str<--->x0, [x2, #3112]
1758:<----->f9061ae1 <----->str<--->x1, [x23, #3120] >> so
address in x23
00000000000057c4 <_efi_start>:
57c4:<----->a9be53f3 <----->stp<--->x19, x20, [sp, #-32]!
57c8:<----->a9017bf5 <----->stp<--->x21, x30, [sp, #16]
57cc:<----->aa0003f5 <----->mov<--->x21, x0
57d0:<----->97ffefdd <----->bl<---->1744 <efi_init>
57d4:<----->aa0003f3 <----->mov<--->x19, x0
looks like 0xfeb2c000 (ie a4000) should be in .relock section and
probably this is correct:
readpe ./bin-arm64-efi/snp.efi
Section
Name: .reloc
Virtual Address: 0xa4ca0
Physical Address: 0x928
Size: 0x940 (2368 bytes)
Pointer To Data: 0x23c80
Relocations: 0
Characteristics: 0x48000040
Characteristic Names
IMAGE_SCN_CNT_INITIALIZED_DATA
IMAGE_SCN_MEM_NOT_PAGED
IMAGE_SCN_MEM_READ
toolchain is aarch64-linux-gnu-gcc -v
gcc 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03
(arm-rel-8.36))
with Linaro 7.3.1 (recommended by nvidia ) behavior the same
may be linker script or u-boot sections parser\relocation is not ok?
My knowledge not enough to understand a reason of this crush and how to
fix it, are some one could help/direct me with this?
More information about the ipxe-devel
mailing list