Skip to content

New TF-A causes PANIC booting OP-TEE on Zynq Ultrascale+ ZCU104 board #290

@frank-kue

Description

@frank-kue

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 .

Docker.zip

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions