This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM68A: Custom Board OP-TEE Boot Failure

Part Number: AM68A

Tool/software:

Hello,

We are in the middle of bringing up a custom board using an AM68A. We are using MAIN_UART3 for our serial console. We followed the instructions in UART Log Debug System on Jacinto 7 SoC to change the serial console from the default of MAIN_UART8 to MAIN_UART3, including rebuilding ATF and OP-TEE. We are getting the serial output on MAIN_UART3 as expected, but run into an issue on the A72 when we reach OP-TEE. Please refer to the serial output below:

U-Boot SPL 2024.04-g4ccc9bf3-dirty (Sep 19 2024 - 17:44:37 -0400)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
SPL initial stack usage: 13440 bytes
Trying to boot from MMC2
Authentication passed
Authentication passed
Authentication passed
Loading Environment from nowhere... OK
Authentication passed
Authentication passed
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b8
NOTICE:  BL31: Built : 19:44:17, Sep 18 2024
I/TC:
I/TC: OP-TEE version: 4.2.0-dev (gcc version 13.3.1 20240614 (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24))) #1 Wed Sep 18 21:47:50 UTC 2024 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: GIC redistributor base address not provided
I/TC: Assuming default GIC group status and modifier
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_send:134 Thread SEC_PROXY_LOW_PRIORITY_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_do_xfer:142 Message sending failed (-65523)
E/TC:0 0 ti_sci_init:486 Unable to communicate with control firmware (-65523)
E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x0006ff80 failed
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_send:134 Thread SEC_PROXY_LOW_PRIORITY_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_do_xfer:142 Message sending failed (-65523)
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_send:134 Thread SEC_PROXY_LOW_PRIORITY_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_do_xfer:142 Message sending failed (-65523)
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_send:134 Thread SEC_PROXY_LOW_PRIORITY_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_do_xfer:142 Message sending failed (-65523)
E/TC:0 0 tee_otp_get_hw_unique_key:97 Could not get HUK
E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x0006ffa8 failed
I/TC: Primary CPU switching to normal world boot
PANIC in EL3.
x30            = 0x0000000070008424
x0             = 0x00000000be000000
x1             = 0x000000009e8018e4
x2             = 0x0000000000000002
x3             = 0x0000000000000700
x4             = 0x000000009e873d90
x5             = 0x000000009e873d90
x6             = 0x000000000000000f
x7             = 0xb46d3e8a0fe4dd9c
x8             = 0x0000000000000020
x9             = 0x000000009e8a2f50
x10            = 0x000000009e8811d0
x11            = 0x0000000000000000
x12            = 0x0000000000000000
x13            = 0x000000009e86ebee
x14            = 0x0000000000000000
x15            = 0x0000000000000000
x16            = 0x000000009e84ddcc
x17            = 0x0000000000000000
x18            = 0x0000000000000000
x19            = 0x0000000000000000
x20            = 0x0000000000000000
x21            = 0x0000000000000000
x22            = 0x0000000000000000
x23            = 0x000000009e8abcb0
x24            = 0x000000009e873dc0
x25            = 0x0000000000000000
x26            = 0x0000000000000000
x27            = 0x0000000000000000
x28            = 0x000000009e8001d4
x29            = 0x0000000000000064
scr_el3        = 0x0000000000000e30
sctlr_el3      = 0x0000000030cd183f
cptr_el3       = 0x0000000000000000
tcr_el3        = 0x0000000080803520
daif           = 0x00000000000003c0
mair_el3       = 0x00000000004404ff
spsr_el3       = 0x00000000600003c4
elr_el3        = 0x000000009e8001d4
ttbr0_el3      = 0x0000000070013080
esr_el3        = 0x000000005e000000
far_el3        = 0x0000000000000000
spsr_el1       = 0x0000000000000000
elr_el1        = 0x0000000000000000
spsr_abt       = 0x0000000000000000
spsr_und       = 0x0000000000000000
spsr_irq       = 0x0000000000000000
spsr_fiq       = 0x0000000000000000
sctlr_el1      = 0x0000000000c8180d
actlr_el1      = 0x0000000000000000
cpacr_el1      = 0x0000000000000000
csselr_el1     = 0x0000000000000000
sp_el1         = 0x000000009e873dc0
esr_el1        = 0x0000000000000000
ttbr0_el1      = 0x000000009e8a1000
ttbr1_el1      = 0x0000000000000000
mair_el1       = 0x00000000ff00ff04
amair_el1      = 0x0000000000000000
tcr_el1        = 0x0000000180803fa0
tpidr_el1      = 0x0000000000000000
tpidr_el0      = 0x0000000000000000
tpidrro_el0    = 0x0000000000000000
par_el1        = 0xff0000009fc00b80
mpidr_el1      = 0x0000000080000000
afsr0_el1      = 0x0000000000000000
afsr1_el1      = 0x0000000000000000
contextidr_el1 = 0x0000000000000000
vbar_el1       = 0x000000009e803000
cntp_ctl_el0   = 0x0000000000000000
cntp_cval_el0  = 0x0000000000000000
cntv_ctl_el0   = 0x0000000000000000
cntv_cval_el0  = 0x0000000000000000
cntkctl_el1    = 0x0000000000000000
sp_el0         = 0x000000009e8abcb0
isr_el1        = 0x0000000000000100
dacr32_el2     = 0x0000000000000000
ifsr32_el2     = 0x0000000000000000
cpuectlr_el1   = 0x0000001b00000040
cpumerrsr_el1  = 0x0000000000000000
l2merrsr_el1   = 0x0000000000000000

I was able to rebuild ATF without the SPD=opteed argument when running make. This allowed me to workaround the OP-TEE issue and can verify that I can begin to boot Linux.

From the logs I included, it looks like the A72 is unable to communicate with the R5 sciserver, but I'm not sure. I'm using version 10.00.00.08 of the Linux SDK and I'm building u-boot using the top level makefile. Can someone guide me on what I can do to resolve this OP-TEE issue?

Thanks!

  • HI Amandio,

    E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
    E/TC:0 0 k3_sec_proxy_send:134 Thread SEC_PROXY_LOW_PRIORITY_THREAD verification failed. ret = -65523
    E/TC:0 0 ti_sci_do_xfer:142 Message sending failed (-65523)
    E/TC:0 0 ti_sci_init:486 Unable to communicate with control firmware (-65523)
    E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x0006ff80 failed
    E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy

    Is there any change in the sec proxy  thread id or host inside the OPTEE.

    What is the thread id you are using ?

    Regards
    Diwakar

  • I didn't change anything in OP-TEE, just rebuilt to use different uart. I used the source code included in the sdk.

    How do I find the thread ID? What should the thread ID be?

    I'm new to this environment, so I'm not sure what else needs to be updated.

  • Hi Diwakar,

    Thank you for the clue about thread ID.

    After some research, I realized I was not building the optee correctly. I was using the wrong argument for PLATFORM when building. When I build with PLATFORM=k3-j784s4 as it is specified in the documentation, I no longer have this issue.

    My fault for not following the documentation.

    Thanks!