From: Amirreza Zarrabi <quic_azarrabi@quicinc.com>
To: Sumit Garg <sumit.garg@linaro.org>
Cc: Jens Wiklander <jens.wiklander@linaro.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
<linux-arm-msm@vger.kernel.org>,
<op-tee@lists.trustedfirmware.org>,
<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-doc@vger.kernel.org>
Subject: Re: [PATCH v2 0/8] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE)
Date: Fri, 7 Feb 2025 06:55:08 +1100 [thread overview]
Message-ID: <f3b30e00-d6cd-44ee-88a5-e5a523563bb3@quicinc.com> (raw)
In-Reply-To: <CAFA6WYNGH_LP-R4hQx-+XMY3zFN74ij-JngwnuKOsz8=r_-bsQ@mail.gmail.com>
On 2/5/2025 4:38 PM, Sumit Garg wrote:
> Hi Amirreza,
>
> On Mon, 3 Feb 2025 at 08:14, Amirreza Zarrabi <quic_azarrabi@quicinc.com> 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.
>
> Thanks for sharing these test user-space applications/libraries. Can I
> know which platforms are currently supported by this QTEE driver? I
> would like to run and understand the overall stack on a real device. I
> do have rb3, rb5 and db410c on my desk to test with.
>
> Also, platform support is important information you should put in the
> cover letter as well as the QTEE documentation.
>
> -Sumit
>
I have tested it with sm8650-mtp. But would expect it to work with any platform.
I'll update the cover letter with the details :).
- Amir
>>
>> [1] https://www.kernel.org/doc/Documentation/tee.txt
>>
>> Signed-off-by: Amirreza Zarrabi <quic_azarrabi@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 (8):
>> 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
>> tee: add Qualcomm TEE driver
>> qcomtee: add primordial object
>> Documentation: tee: Add Qualcomm TEE driver
>>
>> Documentation/tee/index.rst | 1 +
>> Documentation/tee/qtee.rst | 150 ++++++
>> drivers/firmware/qcom/qcom_scm.c | 128 ++++++
>> drivers/firmware/qcom/qcom_scm.h | 7 +
>> drivers/tee/Kconfig | 1 +
>> drivers/tee/Makefile | 1 +
>> drivers/tee/qcomtee/Kconfig | 10 +
>> drivers/tee/qcomtee/Makefile | 10 +
>> drivers/tee/qcomtee/async.c | 160 +++++++
>> drivers/tee/qcomtee/call.c | 741 ++++++++++++++++++++++++++++++
>> drivers/tee/qcomtee/core.c | 810 +++++++++++++++++++++++++++++++++
>> drivers/tee/qcomtee/primordial_obj.c | 65 +++
>> drivers/tee/qcomtee/qcom_scm.c | 36 ++
>> drivers/tee/qcomtee/qcomtee_msg.h | 234 ++++++++++
>> drivers/tee/qcomtee/qcomtee_private.h | 226 +++++++++
>> drivers/tee/qcomtee/release.c | 59 +++
>> drivers/tee/qcomtee/shm.c | 102 +++++
>> drivers/tee/qcomtee/user_obj.c | 712 +++++++++++++++++++++++++++++
>> drivers/tee/tee_core.c | 121 ++++-
>> drivers/tee/tee_private.h | 6 -
>> include/linux/firmware/qcom/qcom_scm.h | 27 ++
>> include/linux/firmware/qcom/qcom_tee.h | 286 ++++++++++++
>> include/linux/tee_core.h | 15 +-
>> include/linux/tee_drv.h | 18 +
>> include/uapi/linux/tee.h | 54 ++-
>> 25 files changed, 3964 insertions(+), 16 deletions(-)
>> ---
>> base-commit: dab2734f8e9ecba609d66d1dd087a392a7774c04
>> change-id: 20241202-qcom-tee-using-tee-ss-without-mem-obj-362c66340527
>>
>> Best regards,
>> --
>> Amirreza Zarrabi <quic_azarrabi@quicinc.com>
>>
next prev parent reply other threads:[~2025-02-06 19:55 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-03 2:43 [PATCH v2 0/8] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE) Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 1/8] tee: allow a driver to allocate a tee_device without a pool Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 2/8] tee: add close_context to TEE driver operation Amirreza Zarrabi
2025-02-17 9:35 ` Jens Wiklander
2025-02-17 23:36 ` Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 3/8] tee: add TEE_IOCTL_PARAM_ATTR_TYPE_UBUF Amirreza Zarrabi
2025-02-17 10:10 ` Jens Wiklander
2025-02-17 23:48 ` Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 4/8] tee: add TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF Amirreza Zarrabi
2025-02-17 10:28 ` Jens Wiklander
2025-02-17 23:50 ` Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 5/8] firmware: qcom: scm: add support for object invocation Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 6/8] tee: add Qualcomm TEE driver Amirreza Zarrabi
2025-02-03 8:14 ` kernel test robot
2025-02-03 10:39 ` kernel test robot
2025-02-03 12:44 ` kernel test robot
2025-03-04 14:42 ` Jens Wiklander
2025-03-05 0:12 ` Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 7/8] qcomtee: add primordial object Amirreza Zarrabi
2025-02-03 2:43 ` [PATCH v2 8/8] Documentation: tee: Add Qualcomm TEE driver Amirreza Zarrabi
2025-02-05 2:40 ` Bagas Sanjaya
2025-02-05 5:38 ` [PATCH v2 0/8] Trusted Execution Environment (TEE) driver for Qualcomm TEE (QTEE) Sumit Garg
2025-02-06 19:55 ` Amirreza Zarrabi [this message]
2025-02-07 5:12 ` Sumit Garg
2025-02-09 20:18 ` 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=f3b30e00-d6cd-44ee-88a5-e5a523563bb3@quicinc.com \
--to=quic_azarrabi@quicinc.com \
--cc=andersson@kernel.org \
--cc=bartosz.golaszewski@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jens.wiklander@linaro.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=op-tee@lists.trustedfirmware.org \
--cc=robh@kernel.org \
--cc=srinivas.kandagatla@linaro.org \
--cc=sumit.garg@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