tlkd: support new TLK SMCs
authorMihir Joshi <mihirj@nvidia.com>
Mon, 22 Jan 2018 22:02:16 +0000 (14:02 -0800)
committerVarun Wadekar <vwadekar@nvidia.com>
Thu, 31 Jan 2019 16:46:54 +0000 (08:46 -0800)
This patch adds support to handle following TLK SMCs:
{TLK_SS_REGISTER_HANDLER, TLK_REGISTER_NS_DRAM_RANGES, TLK_SET_ROOT_OF_TRUST}

These SMCs need to be supported in ATF in order to forward them to
TLK. Otherwise, these functionalities won't work.

Brief:
TLK_SS_REGISTER_HANDLER: This SMC is issued by TLK Linux Driver to
set up secure storage buffers.

TLK_REGISTER_NS_DRAM_RANGES: Cboot performs this SMC during boot to
pass NS memory ranges to TLK.

TLK_SET_ROOT_OF_TRUST: Cboot performs this SMC during boot to pass
Verified Boot parameters to TLK.

Change-Id: I18af35f6dd6f510dfc22c1d1d1d07f643c7b82bc
Reviewed-on: https://git-master.nvidia.com/r/1643851
Signed-off-by: Mihir Joshi <mihirj@nvidia.com>
include/bl32/payloads/tlk.h
services/spd/tlkd/tlkd_main.c

index 2c12633ea1e81764fe95b68ae109b8b5778ec531..ce8e3e89032734afc58236e31b3c7bbf38d559ce 100644 (file)
@@ -20,7 +20,9 @@
  */
 #define TLK_REGISTER_LOGBUF    TLK_TOS_YIELD_FID(0x1)
 #define TLK_REGISTER_REQBUF    TLK_TOS_YIELD_FID(0x2)
-#define TLK_REGISTER_NS_DRAM   TLK_TOS_YIELD_FID(0x4)
+#define TLK_SS_REGISTER_HANDLER        TLK_TOS_YIELD_FID(0x3)
+#define TLK_REGISTER_NS_DRAM_RANGES    TLK_TOS_YIELD_FID(0x4)
+#define TLK_SET_ROOT_OF_TRUST  TLK_TOS_YIELD_FID(0x5)
 #define TLK_RESUME_FID         TLK_TOS_YIELD_FID(0x100)
 #define TLK_SYSTEM_SUSPEND     TLK_TOS_YIELD_FID(0xE001)
 #define TLK_SYSTEM_RESUME      TLK_TOS_YIELD_FID(0xE002)
index b1a04776cce28de49c7ad3ca8ece7aac07ccf8c2..f6f2af52fc7ac333dc138efa5b81d762998904b5 100644 (file)
@@ -195,14 +195,18 @@ static uintptr_t tlkd_smc_handler(uint32_t smc_fid,
         * b. register shared memory with the SP for passing args
         *    required for maintaining sessions with the Trusted
         *    Applications.
-        * c. register non-secure world's memory map with the OS
-        * d. open/close sessions
-        * e. issue commands to the Trusted Apps
-        * f. resume the preempted yielding SMC call.
+        * c. register shared persistent buffers for secure storage
+        * d. register NS DRAM ranges passed by Cboot
+        * e. register Root of Trust parameters from Cboot for Verified Boot
+        * f. open/close sessions
+        * g. issue commands to the Trusted Apps
+        * h. resume the preempted yielding SMC call.
         */
        case TLK_REGISTER_LOGBUF:
        case TLK_REGISTER_REQBUF:
-       case TLK_REGISTER_NS_DRAM:
+       case TLK_SS_REGISTER_HANDLER:
+       case TLK_REGISTER_NS_DRAM_RANGES:
+       case TLK_SET_ROOT_OF_TRUST:
        case TLK_OPEN_TA_SESSION:
        case TLK_CLOSE_TA_SESSION:
        case TLK_TA_LAUNCH_OP:
@@ -400,6 +404,7 @@ static uintptr_t tlkd_smc_handler(uint32_t smc_fid,
                SMC_RET2(handle, TLK_VERSION_MAJOR, TLK_VERSION_MINOR);
 
        default:
+               WARN("%s: Unhandled SMC: 0x%x\n", __func__, smc_fid);
                break;
        }