• Jens Wiklander's avatar
    optee: add OPTEE_SMC_CALL_WITH_RPC_ARG and OPTEE_SMC_CALL_WITH_REGD_ARG · ed8faf6c
    Jens Wiklander authored
    Adds OPTEE_SMC_CALL_WITH_RPC_ARG and OPTEE_SMC_CALL_WITH_REGD_ARG where
    the struct optee_msg_arg to be used for RPC is appended in the memory
    following the normal argument struct optee_msg_arg. This is an
    optimization to avoid caching the RPC argument struct while still
    maintaining similar performance as if it was cached.
    
    OPTEE_SMC_CALL_WITH_REGD_ARG optimized one step further by using a
    registered shared memory object instead. It's in other aspects identical
    to OPTEE_SMC_CALL_WITH_RPC_ARG.
    
    The presence of OPTEE_SMC_CALL_WITH_RPC_ARG and
    OPTEE_SMC_CALL_WITH_REGD_ARG is indicated by the new
    OPTEE_SMC_SEC_CAP_RPC_ARG bit returned by
    OPTEE_SMC_EXCHANGE_CAPABILITIES. OPTEE_SMC_EXCHANGE_CAPABILITIES also
    reports the number of arguments that the RPC argument struct must have
    room for.
    
    OPTEE_SMC_CALL_WITH_RPC_ARG and OPTEE_SMC_CALL_WITH_ARG can be used
    interleaved with difference that when OPTEE_SMC_CALL_WITH_RPC_ARG is
    used the RPC argument struct to be used is the one appended to the
    normal argument struct. The same is true for
    OPTEE_SMC_CALL_WITH_REGD_ARG.
    Reviewed-by: default avatarSumit Garg <sumit.garg@linaro.org>
    Signed-off-by: default avatarJens Wiklander <jens.wiklander@linaro.org>
    ed8faf6c
optee_smc.h 18.6 KB