I'm trying to use Trusty Tee with the Android 9.0 release and a 4.14 Linux kernel. I do see that Trusty starts properly from SPL/U-BOOT, and the device boots to the Android home screen. However, in the log console every 5 seconds I get these messages (see attached log files for more details):
[ 452.893314] trusty: ss-ipc: 382: Failed to create port com.android.trusty.storage.client.tp -14
[ 452.893317] trusty: ss: client_create_port: failure initializing client port (-14)
[ 452.893320] trusty: ss: proxy_connect: block_device_tipc_init failed (-14)
[ 452.893323] trusty: ss-ipc: 105: do_connect: failure initializing channel state (1002)
[ 452.894885] init: Service 'storageproxyd' (pid 4027) exited with status 1
[ 452.961482] init: Sending signal 9 to service 'storageproxyd' (pid 4027) process group...
[ 452.969879] libprocessgroup: Successfully killed process cgroup uid 0 pid 4027 in 0ms
I have been reading (and following) the IMX_ANDROID_SECURITY_USERS_GUIDE but I haven't generated the AVB key or programmed the attestation key. I did program the RPMB fuses in the eMMC, and I think that the RPMB storage proxy service is available from U-Boot because I see this (seemingly error-free) output from u-boot prior to starting Linux:
INFO Initializing Trusty device
INFO selected trusty api version: 3 (requested 3)
INFO Initializing Trusty IPC device
INFO Initializing RPMB storage proxy service
INFO Initializing Trusty AVB client
INFO Initializing Trusty Keymaster client
INFO Initializing Trusty Hardware Crypto client
I did trace the code in the Trusty ss app all the way to an assembly call to "_trusty_port_create" where it puts the "__NR_port_create" value (0x10) into r12, and then makes a call to SVC to communicate back to the unsecure world where I think the Linux driver should be listening to create the TP port that the Trusty OS needs created for communication to happen between the secure and unsecure worlds. I'm not sure what is blocking that from happening.
I'm also wondering, do the attestation keys need to be programmed before the Trusty OS can create the TP port, and/or is there something else that I'm missing?
It just occurred to me. I built the Trusty OS LK outside of my Android build tree. Potentially with a different compiler than my Linux Kernel, but I did use the NXP Android 9.0 repo for the Trusty sources, so I am assuming that is a reasonable way to build it.