RK3588 optee question
Sascha Hauer
s.hauer at pengutronix.de
Tue Aug 11 23:25:54 PDT 2026
On 2026-08-11 14:51, Alexander Shiyan wrote:
> Hello All.
>
> BL31 = rockchip bl31 from rkbin
> BL32 = tee.bin builded from https://github.com/OP-TEE/optee_os.git
>
> DDR cb12b99cc23 hcy 25/10/17-18:57:13,fwver: v1.21
> ...
> NOTICE: BL31: v2.3():v2.3-964-g8319968f5:derrick.huang, fwver: v1.54
> NOTICE: BL31: Built : 17:20:23, Dec 26 2025
> ...
> INFO: BL31: Initialising Exception Handling Framework
> INFO: BL31: Initializing runtime services
> INFO: BL31: Initializing BL32
> INFO: BL31: Preparing for EL3 exit to normal world
> INFO: Entry point address = 0xb00000
> INFO: SPSR = 0x3c9
>
> barebox 2026.07.0-00839-g50ae8812b950-dirty #144 Tue Aug 11 14:39:36 MSK 2026
>
> Board: Diasom DS-RK3588-BTB-EVB
> rockchip-dmc memory-controller.of: Detected memory size: 0x100000000
> netconsole: registered as netconsole-1
> fan53555-regulator rk86020: FAN53555 Option[10] Rev[1] Detected!
> vdd2_ddr: Bringing 500000uV into 1100000-1100000uV
> vddq_ddr: Bringing 500000uV into 600000-600000uV
> rockchip_saradc fec10000.adc at fec10000.of: registered as aiodev0
> BTB revision: 3
> EVB revision: 2
> EVB HAT Addon detected.
> arm-scmi firmware:scmi.of: SCMI Protocol v2.0 'rockchip:' Firmware version 0x0
> optee: smc_abi: probing for conduit method.
> optee: smc_abi: revision 4.10 (71196403f6f9f642)
> ERROR: optee: smc_abi: driver requires OP-TEE dynamic shared memory support
In OP-TEE this goes down to:
#if defined(CFG_CORE_DYN_SHM)
dyn_shm_en = core_mmu_nsec_ddr_is_defined();
if (dyn_shm_en)
args->a1 |= OPTEE_SMC_SEC_CAP_DYNAMIC_SHM;
#endif
So either you have compiled OP-TEE without CFG_CORE_DYN_SHM enabled
(unlikely, it's the default), or core_mmu_nsec_ddr_is_defined() fails
which means OP-TEE doesn't know where your memory is. OP-TEE gets this
information from the device tree. Do you pass a device tree to OP-TEE?
barebox only does it when CONFIG_ARCH_ROCKCHIP_ATF_PASS_FDT is enabled
which currently is not the default as there are some Rockchip TF-A
binaries shipped by Rockchip which do not handle a fdt being passed.
Looking at your TF-A version you might have one of these, so you likely
have to update your TF-A to an upstream one.
Side note: Look at bl31_entry(). if it gets a fdt_addr that will be
passed to both TF-A and OP-TEE. You *could* try passing NULL as fdt to
atf_entry() to pass the fdt only to OP-TEE and not to TF-A, but I
wouldn't encourage that.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list