On Wed, Sep 10, 2025 at 08:41:21PM -0700, Amirreza Zarrabi wrote:
Introduce qcomtee_object, which represents an object in both QTEE and the kernel. QTEE clients can invoke an instance of qcomtee_object to access QTEE services. If this invocation produces a new object in QTEE, an instance of qcomtee_object will be returned.
Similarly, QTEE can request services from by issuing a callback request, which invokes an instance of qcomtee_object.
Implement initial support for exporting qcomtee_object to userspace and QTEE, enabling the invocation of objects hosted in QTEE and userspace through the TEE subsystem.
Tested-by: Neil Armstrong neil.armstrong@linaro.org Tested-by: Harshal Dev quic_hdev@quicinc.com Acked-by: Sumit Garg sumit.garg@oss.qualcomm.com Signed-off-by: Amirreza Zarrabi amirreza.zarrabi@oss.qualcomm.com
MAINTAINERS | 6 + drivers/tee/Kconfig | 1 + drivers/tee/Makefile | 1 + drivers/tee/qcomtee/Kconfig | 12 + drivers/tee/qcomtee/Makefile | 7 + drivers/tee/qcomtee/async.c | 182 +++++++ drivers/tee/qcomtee/call.c | 813 +++++++++++++++++++++++++++++++ drivers/tee/qcomtee/core.c | 906 +++++++++++++++++++++++++++++++++++ drivers/tee/qcomtee/qcomtee.h | 143 ++++++ drivers/tee/qcomtee/qcomtee_msg.h | 304 ++++++++++++ drivers/tee/qcomtee/qcomtee_object.h | 316 ++++++++++++ drivers/tee/qcomtee/shm.c | 153 ++++++ drivers/tee/qcomtee/user_obj.c | 692 ++++++++++++++++++++++++++ include/uapi/linux/tee.h | 1 + 14 files changed, 3537 insertions(+)
+static int +qcomtee_object_invoke_ctx_invoke(struct qcomtee_object_invoke_ctx *oic,
int *result, u64 *res_type)+{
- phys_addr_t out_msg_paddr;
- phys_addr_t in_msg_paddr;
- int ret;
- u64 res;
- tee_shm_get_pa(oic->out_shm, 0, &out_msg_paddr);
- tee_shm_get_pa(oic->in_shm, 0, &in_msg_paddr);
- if (!(oic->flags & QCOMTEE_OIC_FLAG_BUSY))
ret = qcom_scm_qtee_invoke_smc(in_msg_paddr, oic->in_msg.size,out_msg_paddr, oic->out_msg.size,&res, res_type);- else
ret = qcom_scm_qtee_callback_response(out_msg_paddr,oic->out_msg.size,&res, res_type);- if (ret)
pr_err("QTEE returned with %d.\n", ret);- else
*result = (int)res;
After enablign QCOMTEE driver, I observe the following error during the bootup on RB3 Gen2:
[ 4.720777] qcomtee: QTEE returned with -22. [ 4.725251] qcomtee: QTEE version 0.0.0
- return ret;
+}
linaro-mm-sig@lists.linaro.org