From: neil.armstrong@linaro.org
To: "Amirreza Zarrabi" <amirreza.zarrabi@oss.qualcomm.com>,
"Jens Wiklander" <jens.wiklander@linaro.org>,
"Sumit Garg" <sumit.garg@kernel.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>
Cc: 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 v3 00/11] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE)
Date: Wed, 9 Apr 2025 10:30:18 +0200 [thread overview]
Message-ID: <fd9ac8f1-94ad-460f-8ca7-e56724416fcf@linaro.org> (raw)
In-Reply-To: <20250327-qcom-tee-using-tee-ss-without-mem-obj-v3-0-7f457073282d@oss.qualcomm.com>
On 28/03/2025 03:47, Amirreza Zarrabi wrote:
> This patch series introduces a Trusted Execution Environment (TEE)
> driver for Qualcomm TEE (QTEE). QTEE enables Trusted Applications (TAs)
> and services to run securely. It uses an object-based interface, where
> each service is an object with sets of operations. Clients can invoke
> these operations on objects, which can generate results, including other
> objects. For example, an object can load a TA and return another object
> that represents the loaded TA, allowing access to its services.
>
> Kernel and userspace services are also available to QTEE through a
> similar approach. QTEE makes callback requests that are converted into
> object invocations. These objects can represent services within the
> kernel or userspace process.
>
> Note: This patch series focuses on QTEE objects and userspace services.
>
> Linux already provides a TEE subsystem, which is described in [1]. The
> tee subsystem provides a generic ioctl interface, TEE_IOC_INVOKE, which
> can be used by userspace to talk to a TEE backend driver. We extend the
> Linux TEE subsystem to understand object parameters and an ioctl call so
> client can invoke objects in QTEE:
>
> - TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF_*
> - TEE_IOC_OBJECT_INVOKE
>
> The existing ioctl calls TEE_IOC_SUPPL_RECV and TEE_IOC_SUPPL_SEND are
> used for invoking services in the userspace process by QTEE.
>
> The TEE backend driver uses the QTEE Transport Message to communicate
> with QTEE. Interactions through the object INVOKE interface are
> translated into QTEE messages. Likewise, object invocations from QTEE
> for userspace objects are converted into SEND/RECV ioctl calls to
> supplicants.
>
> The details of QTEE Transport Message to communicate with QTEE is
> available in [PATCH 10/10] Documentation: tee: Add Qualcomm TEE driver.
>
> You can run basic tests with following steps:
> git clone https://github.com/quic/quic-teec.git
> cd quic-teec
> mkdir build
> cmake .. -DCMAKE_TOOLCHAIN_FILE=CMakeToolchain.txt -DBUILD_UNITTEST=ON
>
> https://github.com/quic/quic-teec/blob/main/README.md lists dependancies
> needed to build the above.
>
> This series has been tested for basic QTEE object invocations and
> callback requests, including loading a TA and requesting services form
> the TA.
>
> Tested platforms: sm8650-mtp
Does it requires any DT changes to be tested on other SM8650 devices ?
Thanks,
Neil
>
> [1] https://www.kernel.org/doc/Documentation/tee.txt
>
> Signed-off-by: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
>
> Changes in v3:
> - Export shm_bridge create/delete APIs.
> - Enable support for QTEE memory objects.
> - Update the memory management code to use the TEE subsystem for all
> allocations using the pool.
> - Move all driver states into the driver's main service struct.
> - Add more documentations.
> - Link to v2: https://lore.kernel.org/r/20250202-qcom-tee-using-tee-ss-without-mem-obj-v2-0-297eacd0d34f@quicinc.com
>
> Changes in v2:
> - Clean up commit messages and comments.
> - Use better names such as ubuf instead of membuf or QCOMTEE prefix
> instead of QCOM_TEE, or names that are more consistent with other
> TEE-backend drivers such as qcomtee_context_data instead of
> qcom_tee_context.
> - Drop the DTS patch and instantiate the device from the scm driver.
> - Use a single structure for all driver's internal states.
> - Drop srcu primitives and use the existing mutex for synchronization
> between the supplicant and QTEE.
> - Directly use tee_context to track the lifetime of qcomtee_context_data.
> - Add close_context() to be called when the user closes the tee_context.
> - Link to v1: https://lore.kernel.org/r/20241202-qcom-tee-using-tee-ss-without-mem-obj-v1-0-f502ef01e016@quicinc.com
>
> Changes in v1:
> - It is a complete rewrite to utilize the TEE subsystem.
> - Link to RFC: https://lore.kernel.org/all/20240702-qcom-tee-object-and-ioctls-v1-0-633c3ddf57ee@quicinc.com
>
> ---
> Amirreza Zarrabi (11):
> tee: allow a driver to allocate a tee_device without a pool
> tee: add close_context to TEE driver operation
> tee: add TEE_IOCTL_PARAM_ATTR_TYPE_UBUF
> tee: add TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF
> firmware: qcom: scm: add support for object invocation
> firmware: qcom: scm: remove unused arguments to the shm_brige
> firmware: qcom: tzmem: export shm_bridge create/delete
> tee: add Qualcomm TEE driver
> qcomtee: add primordial object
> qcomtee: enable TEE_IOC_SHM_ALLOC ioctl
> Documentation: tee: Add Qualcomm TEE driver
>
> Documentation/tee/index.rst | 1 +
> Documentation/tee/qtee.rst | 150 ++++++
> drivers/firmware/qcom/qcom_scm.c | 132 ++++-
> drivers/firmware/qcom/qcom_scm.h | 7 +
> drivers/firmware/qcom/qcom_tzmem.c | 57 ++-
> drivers/tee/Kconfig | 1 +
> drivers/tee/Makefile | 1 +
> drivers/tee/qcomtee/Kconfig | 10 +
> drivers/tee/qcomtee/Makefile | 11 +
> drivers/tee/qcomtee/async.c | 160 ++++++
> drivers/tee/qcomtee/call.c | 759 +++++++++++++++++++++++++++++
> drivers/tee/qcomtee/core.c | 810 +++++++++++++++++++++++++++++++
> drivers/tee/qcomtee/mem_obj.c | 172 +++++++
> drivers/tee/qcomtee/primordial_obj.c | 116 +++++
> drivers/tee/qcomtee/qcom_scm.c | 38 ++
> drivers/tee/qcomtee/qcomtee_msg.h | 239 +++++++++
> drivers/tee/qcomtee/qcomtee_private.h | 264 ++++++++++
> drivers/tee/qcomtee/release.c | 48 ++
> drivers/tee/qcomtee/shm.c | 146 ++++++
> drivers/tee/qcomtee/user_obj.c | 710 +++++++++++++++++++++++++++
> drivers/tee/tee_core.c | 159 +++++-
> drivers/tee/tee_private.h | 6 -
> include/linux/firmware/qcom/qcom_scm.h | 31 +-
> include/linux/firmware/qcom/qcom_tee.h | 302 ++++++++++++
> include/linux/firmware/qcom/qcom_tzmem.h | 15 +
> include/linux/tee_core.h | 15 +-
> include/linux/tee_drv.h | 52 ++
> include/uapi/linux/tee.h | 54 ++-
> 28 files changed, 4434 insertions(+), 32 deletions(-)
> ---
> base-commit: db8da9da41bced445077925f8a886c776a47440c
> change-id: 20241202-qcom-tee-using-tee-ss-without-mem-obj-362c66340527
>
> Best regards,
next prev parent reply other threads:[~2025-04-09 8:30 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-28 2:47 [PATCH v3 00/11] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE) Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 01/11] tee: allow a driver to allocate a tee_device without a pool Amirreza Zarrabi
2025-04-21 10:18 ` Sumit Garg
2025-03-28 2:47 ` [PATCH v3 02/11] tee: add close_context to TEE driver operation Amirreza Zarrabi
2025-04-07 14:55 ` Jens Wiklander
2025-04-09 0:20 ` Amirreza Zarrabi
2025-04-21 10:42 ` Sumit Garg
2025-04-28 4:01 ` Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 03/11] tee: add TEE_IOCTL_PARAM_ATTR_TYPE_UBUF Amirreza Zarrabi
2025-03-29 4:58 ` kernel test robot
2025-04-08 12:19 ` Jens Wiklander
[not found] ` <5de2a378-77cf-4373-b3ae-faeebb931e2d@oss.qualcomm.com>
2025-04-09 6:41 ` Jens Wiklander
2025-04-09 7:20 ` Amirreza Zarrabi
2025-04-09 8:27 ` Jens Wiklander
2025-04-21 13:17 ` Sumit Garg
2025-04-28 4:37 ` Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 04/11] tee: add TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF Amirreza Zarrabi
2025-04-21 13:38 ` Sumit Garg
2025-04-28 4:17 ` Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 05/11] firmware: qcom: scm: add support for object invocation Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 06/11] firmware: qcom: scm: remove unused arguments to the shm_brige Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 07/11] firmware: qcom: tzmem: export shm_bridge create/delete Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 08/11] tee: add Qualcomm TEE driver Amirreza Zarrabi
2025-03-28 22:21 ` kernel test robot
2025-04-08 12:47 ` Jens Wiklander
2025-04-09 1:26 ` Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 09/11] qcomtee: add primordial object Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 10/11] qcomtee: enable TEE_IOC_SHM_ALLOC ioctl Amirreza Zarrabi
2025-03-28 2:47 ` [PATCH v3 11/11] Documentation: tee: Add Qualcomm TEE driver Amirreza Zarrabi
2025-04-09 8:30 ` neil.armstrong [this message]
2025-04-11 5:55 ` [PATCH v3 00/11] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE) Amirreza Zarrabi
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=fd9ac8f1-94ad-460f-8ca7-e56724416fcf@linaro.org \
--to=neil.armstrong@linaro.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=sumit.garg@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox