-
Notifications
You must be signed in to change notification settings - Fork 200
Description
Bug Description
In March 2024 I successfully built and run OP-TEE on an Xilinx Zynq Ultrascale+ ZCU104 board. Building a current version (4.2.0 or 4.3.0 or master) causes the boot to fail with a PANIC:
[...]
D/TC:0 0 call_initcalls:40 level 7 gic_set_primary_done()
I/TC: Primary CPU switching to normal world boot
PANIC at PC : 0x0000000000004188
[...]
This happens after initializing OP-TEE during boot and before running U-boot. During a successful boot (see bug workaround below) the console output at this place looks like:
[...]
D/TC:0 0 call_initcalls:40 level 7 gic_set_primary_done()
I/TC: Primary CPU switching to normal world boot
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x8000000
INFO: SPSR = 0x3c9
U-Boot 2021.01 (Aug 09 2024 - 11:25:41 +0000)
Model: ZynqMP ZCU104 RevC
Board: Xilinx ZynqMP
[...]
Bug Workaround
The bug workaround is to set the git commit of arm-trusted-firmware to 04013814718e. (I did not try other git commits. This one works for me.)
How to Reproduce
The Dockerfile in the attachment builds two files: BOOT.bin and zynqmp-zcu104.ub which successfully boot from SD-card on the ZCU104 board. For build instructions see the comments in the Dockerfile which follow closely the ones of https://optee.readthedocs.io/en/latest/building/devices/zynqmp.html .
To reproduce the bug (i.e. build a none-booting BOOT.bin) remove the line
git -C arm-trusted-firmware checkout 04013814718e870261f27256216cd7da3eda6a5d
from the Dockerfile.