From: Sumit Garg <sumit.garg@kernel.org>
To: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
Cc: "Jens Wiklander" <jens.wiklander@linaro.org>,
"Bjorn Andersson" <andersson@kernel.org>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Bartosz Golaszewski" <bartosz.golaszewski@linaro.org>,
"Apurupa Pattapu" <quic_apurupa@quicinc.com>,
"Kees Cook" <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Harshal Dev" <quic_hdev@quicinc.com>,
linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org,
linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org,
dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v6 12/12] Documentation: tee: Add Qualcomm TEE driver
Date: Mon, 21 Jul 2025 16:11:34 +0530 [thread overview]
Message-ID: <aH4ZXmsKu08F5uPL@sumit-X1> (raw)
In-Reply-To: <20250713-qcom-tee-using-tee-ss-without-mem-obj-v6-12-697fb7d41c36@oss.qualcomm.com>
On Sun, Jul 13, 2025 at 05:49:24PM -0700, Amirreza Zarrabi wrote:
> Add documentation for the Qualcomm TEE driver.
>
> Signed-off-by: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
> ---
> Documentation/tee/index.rst | 1 +
> Documentation/tee/qtee.rst | 96 +++++++++++++++++++++++++++++++++++++++++++++
> MAINTAINERS | 1 +
> 3 files changed, 98 insertions(+)
Acked-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
-Sumit
>
> diff --git a/Documentation/tee/index.rst b/Documentation/tee/index.rst
> index 4be6e69d7837..62afb7ee9b52 100644
> --- a/Documentation/tee/index.rst
> +++ b/Documentation/tee/index.rst
> @@ -11,6 +11,7 @@ TEE Subsystem
> op-tee
> amd-tee
> ts-tee
> + qtee
>
> .. only:: subproject and html
>
> diff --git a/Documentation/tee/qtee.rst b/Documentation/tee/qtee.rst
> new file mode 100644
> index 000000000000..2fa2c1bf6384
> --- /dev/null
> +++ b/Documentation/tee/qtee.rst
> @@ -0,0 +1,96 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +=============================================
> +QTEE (Qualcomm Trusted Execution Environment)
> +=============================================
> +
> +The QTEE driver handles communication with Qualcomm TEE [1].
> +
> +The lowest level of communication with QTEE builds on the ARM SMC Calling
> +Convention (SMCCC) [2], which is the foundation for QTEE's Secure Channel
> +Manager (SCM) [3] used internally by the driver.
> +
> +In a QTEE-based system, services are represented as objects with a series of
> +operations that can be called to produce results, including other objects.
> +
> +When an object is hosted within QTEE, executing its operations is referred
> +to as "direct invocation". QTEE can also invoke objects hosted in the non-secure
> +world using a method known as "callback request".
> +
> +The SCM provides two functions to support direct invocation and callback requests:
> +
> +- QCOM_SCM_SMCINVOKE_INVOKE: Used for direct invocation. It can return either
> + a result or initiate a callback request.
> +- QCOM_SCM_SMCINVOKE_CB_RSP: Used to submit a response to a callback request
> + triggered by a previous direct invocation.
> +
> +The QTEE Transport Message [4] is stacked on top of the SCM driver functions.
> +
> +A message consists of two buffers shared with QTEE: inbound and outbound
> +buffers. The inbound buffer is used for direct invocation, and the outbound
> +buffer is used to make callback requests. This picture shows the contents of
> +a QTEE transport message::
> +
> + +---------------------+
> + | v
> + +-----------------+-------+-------+------+--------------------------+
> + | qcomtee_msg_ |object | buffer | |
> + | object_invoke | id | offset, size | | (inbound buffer)
> + +-----------------+-------+--------------+--------------------------+
> + <---- header -----><---- arguments ------><- in/out buffer payload ->
> +
> + +-----------+
> + | v
> + +-----------------+-------+-------+------+----------------------+
> + | qcomtee_msg_ |object | buffer | |
> + | callback | id | offset, size | | (outbound buffer)
> + +-----------------+-------+--------------+----------------------+
> +
> +Each buffer is started with a header and array of arguments.
> +
> +QTEE Transport Message supports four types of arguments:
> +
> +- Input Object (IO) is an object parameter to the current invocation
> + or callback request.
> +- Output Object (OO) is an object parameter from the current invocation
> + or callback request.
> +- Input Buffer (IB) is (offset, size) pair to the inbound or outbound region
> + to store parameter to the current invocation or callback request.
> +- Output Buffer (OB) is (offset, size) pair to the inbound or outbound region
> + to store parameter from the current invocation or callback request.
> +
> +Picture of the relationship between the different components in the QTEE
> +architecture::
> +
> + User space Kernel Secure world
> + ~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~~
> + +--------+ +----------+ +--------------+
> + | Client | |callback | | Trusted |
> + +--------+ |server | | Application |
> + /\ +----------+ +--------------+
> + || +----------+ /\ /\
> + || |callback | || ||
> + || |server | || \/
> + || +----------+ || +--------------+
> + || /\ || | TEE Internal |
> + || || || | API |
> + \/ \/ \/ +--------+--------+ +--------------+
> + +---------------------+ | TEE | QTEE | | QTEE |
> + | libqcomtee [5] | | subsys | driver | | Trusted OS |
> + +-------+-------------+--+----+-------+----+-------------+--------------+
> + | Generic TEE API | | QTEE MSG |
> + | IOCTL (TEE_IOC_*) | | SMCCC (QCOM_SCM_SMCINVOKE_*) |
> + +-----------------------------+ +---------------------------------+
> +
> +References
> +==========
> +
> +[1] https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-11/qualcomm-trusted-execution-environment.html
> +
> +[2] http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html
> +
> +[3] drivers/firmware/qcom/qcom_scm.c
> +
> +[4] drivers/tee/qcomtee/qcomtee_msg.h
> +
> +[5] https://github.com/quic/quic-teec
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 9fc58f48fa14..391fc6e6defc 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -20706,6 +20706,7 @@ QUALCOMM TEE (QCOMTEE) DRIVER
> M: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
> L: linux-arm-msm@vger.kernel.org
> S: Maintained
> +F: Documentation/tee/qtee.rst
> F: drivers/tee/qcomtee/
>
> QUALCOMM TRUST ZONE MEMORY ALLOCATOR
>
> --
> 2.34.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Sumit Garg via OP-TEE <op-tee@lists.trustedfirmware.org>
To: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
Cc: "Bjorn Andersson" <andersson@kernel.org>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Bartosz Golaszewski" <bartosz.golaszewski@linaro.org>,
"Apurupa Pattapu" <quic_apurupa@quicinc.com>,
"Kees Cook" <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Harshal Dev" <quic_hdev@quicinc.com>,
linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org,
linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org,
dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v6 12/12] Documentation: tee: Add Qualcomm TEE driver
Date: Mon, 21 Jul 2025 16:11:34 +0530 [thread overview]
Message-ID: <aH4ZXmsKu08F5uPL@sumit-X1> (raw)
In-Reply-To: <20250713-qcom-tee-using-tee-ss-without-mem-obj-v6-12-697fb7d41c36@oss.qualcomm.com>
On Sun, Jul 13, 2025 at 05:49:24PM -0700, Amirreza Zarrabi wrote:
> Add documentation for the Qualcomm TEE driver.
>
> Signed-off-by: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
> ---
> Documentation/tee/index.rst | 1 +
> Documentation/tee/qtee.rst | 96 +++++++++++++++++++++++++++++++++++++++++++++
> MAINTAINERS | 1 +
> 3 files changed, 98 insertions(+)
Acked-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
-Sumit
>
> diff --git a/Documentation/tee/index.rst b/Documentation/tee/index.rst
> index 4be6e69d7837..62afb7ee9b52 100644
> --- a/Documentation/tee/index.rst
> +++ b/Documentation/tee/index.rst
> @@ -11,6 +11,7 @@ TEE Subsystem
> op-tee
> amd-tee
> ts-tee
> + qtee
>
> .. only:: subproject and html
>
> diff --git a/Documentation/tee/qtee.rst b/Documentation/tee/qtee.rst
> new file mode 100644
> index 000000000000..2fa2c1bf6384
> --- /dev/null
> +++ b/Documentation/tee/qtee.rst
> @@ -0,0 +1,96 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +=============================================
> +QTEE (Qualcomm Trusted Execution Environment)
> +=============================================
> +
> +The QTEE driver handles communication with Qualcomm TEE [1].
> +
> +The lowest level of communication with QTEE builds on the ARM SMC Calling
> +Convention (SMCCC) [2], which is the foundation for QTEE's Secure Channel
> +Manager (SCM) [3] used internally by the driver.
> +
> +In a QTEE-based system, services are represented as objects with a series of
> +operations that can be called to produce results, including other objects.
> +
> +When an object is hosted within QTEE, executing its operations is referred
> +to as "direct invocation". QTEE can also invoke objects hosted in the non-secure
> +world using a method known as "callback request".
> +
> +The SCM provides two functions to support direct invocation and callback requests:
> +
> +- QCOM_SCM_SMCINVOKE_INVOKE: Used for direct invocation. It can return either
> + a result or initiate a callback request.
> +- QCOM_SCM_SMCINVOKE_CB_RSP: Used to submit a response to a callback request
> + triggered by a previous direct invocation.
> +
> +The QTEE Transport Message [4] is stacked on top of the SCM driver functions.
> +
> +A message consists of two buffers shared with QTEE: inbound and outbound
> +buffers. The inbound buffer is used for direct invocation, and the outbound
> +buffer is used to make callback requests. This picture shows the contents of
> +a QTEE transport message::
> +
> + +---------------------+
> + | v
> + +-----------------+-------+-------+------+--------------------------+
> + | qcomtee_msg_ |object | buffer | |
> + | object_invoke | id | offset, size | | (inbound buffer)
> + +-----------------+-------+--------------+--------------------------+
> + <---- header -----><---- arguments ------><- in/out buffer payload ->
> +
> + +-----------+
> + | v
> + +-----------------+-------+-------+------+----------------------+
> + | qcomtee_msg_ |object | buffer | |
> + | callback | id | offset, size | | (outbound buffer)
> + +-----------------+-------+--------------+----------------------+
> +
> +Each buffer is started with a header and array of arguments.
> +
> +QTEE Transport Message supports four types of arguments:
> +
> +- Input Object (IO) is an object parameter to the current invocation
> + or callback request.
> +- Output Object (OO) is an object parameter from the current invocation
> + or callback request.
> +- Input Buffer (IB) is (offset, size) pair to the inbound or outbound region
> + to store parameter to the current invocation or callback request.
> +- Output Buffer (OB) is (offset, size) pair to the inbound or outbound region
> + to store parameter from the current invocation or callback request.
> +
> +Picture of the relationship between the different components in the QTEE
> +architecture::
> +
> + User space Kernel Secure world
> + ~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~~
> + +--------+ +----------+ +--------------+
> + | Client | |callback | | Trusted |
> + +--------+ |server | | Application |
> + /\ +----------+ +--------------+
> + || +----------+ /\ /\
> + || |callback | || ||
> + || |server | || \/
> + || +----------+ || +--------------+
> + || /\ || | TEE Internal |
> + || || || | API |
> + \/ \/ \/ +--------+--------+ +--------------+
> + +---------------------+ | TEE | QTEE | | QTEE |
> + | libqcomtee [5] | | subsys | driver | | Trusted OS |
> + +-------+-------------+--+----+-------+----+-------------+--------------+
> + | Generic TEE API | | QTEE MSG |
> + | IOCTL (TEE_IOC_*) | | SMCCC (QCOM_SCM_SMCINVOKE_*) |
> + +-----------------------------+ +---------------------------------+
> +
> +References
> +==========
> +
> +[1] https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-11/qualcomm-trusted-execution-environment.html
> +
> +[2] http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html
> +
> +[3] drivers/firmware/qcom/qcom_scm.c
> +
> +[4] drivers/tee/qcomtee/qcomtee_msg.h
> +
> +[5] https://github.com/quic/quic-teec
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 9fc58f48fa14..391fc6e6defc 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -20706,6 +20706,7 @@ QUALCOMM TEE (QCOMTEE) DRIVER
> M: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
> L: linux-arm-msm@vger.kernel.org
> S: Maintained
> +F: Documentation/tee/qtee.rst
> F: drivers/tee/qcomtee/
>
> QUALCOMM TRUST ZONE MEMORY ALLOCATOR
>
> --
> 2.34.1
>
next prev parent reply other threads:[~2025-07-21 10:41 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-14 0:49 [PATCH v6 00/12] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE) Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 01/12] tee: allow a driver to allocate a tee_device without a pool Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 02/12] tee: add close_context to TEE driver operation Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 03/12] tee: add TEE_IOCTL_PARAM_ATTR_TYPE_UBUF Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 04/12] tee: add TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 05/12] tee: increase TEE_MAX_ARG_SIZE to 4096 Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 06/12] firmware: qcom: scm: add support for object invocation Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 07/12] firmware: qcom: scm: remove unused arguments to the shm_brige Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 08/12] firmware: qcom: tzmem: export shm_bridge create/delete Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 8:22 ` kernel test robot
2025-07-14 0:49 ` [PATCH v6 09/12] tee: add Qualcomm TEE driver Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 18:49 ` kernel test robot
2025-07-21 10:40 ` Sumit Garg
2025-07-21 10:40 ` Sumit Garg via OP-TEE
2025-07-24 3:18 ` Amirreza Zarrabi
2025-07-24 3:18 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 10/12] qcomtee: add primordial object Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 11/12] qcomtee: enable TEE_IOC_SHM_ALLOC ioctl Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-14 0:49 ` [PATCH v6 12/12] Documentation: tee: Add Qualcomm TEE driver Amirreza Zarrabi
2025-07-14 0:49 ` Amirreza Zarrabi via OP-TEE
2025-07-21 10:41 ` Sumit Garg [this message]
2025-07-21 10:41 ` Sumit Garg via OP-TEE
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aH4ZXmsKu08F5uPL@sumit-X1 \
--to=sumit.garg@kernel.org \
--cc=amirreza.zarrabi@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=bartosz.golaszewski@linaro.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gustavoars@kernel.org \
--cc=jens.wiklander@linaro.org \
--cc=kees@kernel.org \
--cc=konradybcio@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=op-tee@lists.trustedfirmware.org \
--cc=quic_apurupa@quicinc.com \
--cc=quic_hdev@quicinc.com \
--cc=sumit.semwal@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.