From: Jens Wiklander <jens.wiklander@linaro.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
linaro-mm-sig@lists.linaro.org, op-tee@lists.trustedfirmware.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org,
"Olivier Masse" <olivier.masse@nxp.com>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Yong Wu" <yong.wu@mediatek.com>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
"Brian Starkey" <Brian.Starkey@arm.com>,
"John Stultz" <jstultz@google.com>,
"T . J . Mercier" <tjmercier@google.com>,
"Christian König" <christian.koenig@amd.com>,
"Sumit Garg" <sumit.garg@linaro.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>
Subject: Re: [RFC PATCH 0/4] Linaro restricted heap
Date: Wed, 25 Sep 2024 09:15:04 +0200 [thread overview]
Message-ID: <20240925071504.GA3519798@rayden> (raw)
In-Reply-To: <dhxvyshwi4qmcmwceokhqey2ww4azjcs6qrpnkgivdj7tv5cke@r36srvvbof6q>
On Mon, Sep 23, 2024 at 09:33:29AM +0300, Dmitry Baryshkov wrote:
> Hi,
>
> On Fri, Aug 30, 2024 at 09:03:47AM GMT, Jens Wiklander wrote:
> > Hi,
> >
> > This patch set is based on top of Yong Wu's restricted heap patch set [1].
> > It's also a continuation on Olivier's Add dma-buf secure-heap patch set [2].
> >
> > The Linaro restricted heap uses genalloc in the kernel to manage the heap
> > carvout. This is a difference from the Mediatek restricted heap which
> > relies on the secure world to manage the carveout.
> >
> > I've tried to adress the comments on [2], but [1] introduces changes so I'm
> > afraid I've had to skip some comments.
>
> I know I have raised the same question during LPC (in connection to
> Qualcomm's dma-heap implementation). Is there any reason why we are
> using generic heaps instead of allocating the dma-bufs on the device
> side?
>
> In your case you already have TEE device, you can use it to allocate and
> export dma-bufs, which then get imported by the V4L and DRM drivers.
>
> I have a feeling (I might be completely wrong here) that by using
> generic dma-buf heaps we can easily end up in a situation when the
> userspace depends heavily on the actual platform being used (to map the
> platform to heap names). I think we should instead depend on the
> existing devices (e.g. if there is a TEE device, use an IOCTL to
> allocate secured DMA BUF from it, otherwise check for QTEE device,
> otherwise check for some other vendor device).
That makes sense, it's similar to what we do with TEE_IOC_SHM_ALLOC
where we allocate from a carveout reserverd for shared memory with the
secure world. It was even based on dma-buf until commit dfd0743f1d9e
("tee: handle lookup of shm with reference count 0").
We should use a new TEE_IOC_*_ALLOC for these new dma-bufs to avoid
confusion and to have more freedom when designing the interface.
>
> The mental experiment to check if the API is correct is really simple:
> Can you use exactly the same rootfs on several devices without
> any additional tuning (e.g. your QEMU, HiKey, a Mediatek board, Qualcomm
> laptop, etc)?
No, I don't think so.
>
> >
> > This can be tested on QEMU with the following steps:
> > repo init -u https://github.com/jenswi-linaro/manifest.git -m qemu_v8.xml \
> > -b prototype/sdp-v1
> > repo sync -j8
> > cd build
> > make toolchains -j4
> > make all -j$(nproc)
> > make run-only
> > # login and at the prompt:
> > xtest --sdp-basic
> >
> > https://optee.readthedocs.io/en/latest/building/prerequisites.html
> > list dependencies needed to build the above.
> >
> > The tests are pretty basic, mostly checking that a Trusted Application in
> > the secure world can access and manipulate the memory.
>
> - Can we test that the system doesn't crash badly if user provides
> non-secured memory to the users which expect a secure buffer?
>
> - At the same time corresponding entities shouldn't decode data to the
> buffers accessible to the rest of the sytem.
I'll a few tests along that.
Thanks,
Jens
>
> >
> > Cheers,
> > Jens
> >
> > [1] https://lore.kernel.org/dri-devel/20240515112308.10171-1-yong.wu@mediatek.com/
> > [2] https://lore.kernel.org/lkml/20220805135330.970-1-olivier.masse@nxp.com/
> >
> > Changes since Olivier's post [2]:
> > * Based on Yong Wu's post [1] where much of dma-buf handling is done in
> > the generic restricted heap
> > * Simplifications and cleanup
> > * New commit message for "dma-buf: heaps: add Linaro restricted dmabuf heap
> > support"
> > * Replaced the word "secure" with "restricted" where applicable
> >
> > Etienne Carriere (1):
> > tee: new ioctl to a register tee_shm from a dmabuf file descriptor
> >
> > Jens Wiklander (2):
> > dma-buf: heaps: restricted_heap: add no_map attribute
> > dma-buf: heaps: add Linaro restricted dmabuf heap support
> >
> > Olivier Masse (1):
> > dt-bindings: reserved-memory: add linaro,restricted-heap
> >
> > .../linaro,restricted-heap.yaml | 56 ++++++
> > drivers/dma-buf/heaps/Kconfig | 10 ++
> > drivers/dma-buf/heaps/Makefile | 1 +
> > drivers/dma-buf/heaps/restricted_heap.c | 17 +-
> > drivers/dma-buf/heaps/restricted_heap.h | 2 +
> > .../dma-buf/heaps/restricted_heap_linaro.c | 165 ++++++++++++++++++
> > drivers/tee/tee_core.c | 38 ++++
> > drivers/tee/tee_shm.c | 104 ++++++++++-
> > include/linux/tee_drv.h | 11 ++
> > include/uapi/linux/tee.h | 29 +++
> > 10 files changed, 426 insertions(+), 7 deletions(-)
> > create mode 100644 Documentation/devicetree/bindings/reserved-memory/linaro,restricted-heap.yaml
> > create mode 100644 drivers/dma-buf/heaps/restricted_heap_linaro.c
> >
> > --
> > 2.34.1
> >
>
> --
> With best wishes
> Dmitry
WARNING: multiple messages have this Message-ID (diff)
From: Jens Wiklander <jens.wiklander@linaro.org>
To: op-tee@lists.trustedfirmware.org
Subject: Re: [RFC PATCH 0/4] Linaro restricted heap
Date: Wed, 25 Sep 2024 09:15:04 +0200 [thread overview]
Message-ID: <20240925071504.GA3519798@rayden> (raw)
In-Reply-To: <dhxvyshwi4qmcmwceokhqey2ww4azjcs6qrpnkgivdj7tv5cke@r36srvvbof6q>
[-- Attachment #1: Type: text/plain, Size: 5005 bytes --]
On Mon, Sep 23, 2024 at 09:33:29AM +0300, Dmitry Baryshkov wrote:
> Hi,
>
> On Fri, Aug 30, 2024 at 09:03:47AM GMT, Jens Wiklander wrote:
> > Hi,
> >
> > This patch set is based on top of Yong Wu's restricted heap patch set [1].
> > It's also a continuation on Olivier's Add dma-buf secure-heap patch set [2].
> >
> > The Linaro restricted heap uses genalloc in the kernel to manage the heap
> > carvout. This is a difference from the Mediatek restricted heap which
> > relies on the secure world to manage the carveout.
> >
> > I've tried to adress the comments on [2], but [1] introduces changes so I'm
> > afraid I've had to skip some comments.
>
> I know I have raised the same question during LPC (in connection to
> Qualcomm's dma-heap implementation). Is there any reason why we are
> using generic heaps instead of allocating the dma-bufs on the device
> side?
>
> In your case you already have TEE device, you can use it to allocate and
> export dma-bufs, which then get imported by the V4L and DRM drivers.
>
> I have a feeling (I might be completely wrong here) that by using
> generic dma-buf heaps we can easily end up in a situation when the
> userspace depends heavily on the actual platform being used (to map the
> platform to heap names). I think we should instead depend on the
> existing devices (e.g. if there is a TEE device, use an IOCTL to
> allocate secured DMA BUF from it, otherwise check for QTEE device,
> otherwise check for some other vendor device).
That makes sense, it's similar to what we do with TEE_IOC_SHM_ALLOC
where we allocate from a carveout reserverd for shared memory with the
secure world. It was even based on dma-buf until commit dfd0743f1d9e
("tee: handle lookup of shm with reference count 0").
We should use a new TEE_IOC_*_ALLOC for these new dma-bufs to avoid
confusion and to have more freedom when designing the interface.
>
> The mental experiment to check if the API is correct is really simple:
> Can you use exactly the same rootfs on several devices without
> any additional tuning (e.g. your QEMU, HiKey, a Mediatek board, Qualcomm
> laptop, etc)?
No, I don't think so.
>
> >
> > This can be tested on QEMU with the following steps:
> > repo init -u https://github.com/jenswi-linaro/manifest.git -m qemu_v8.xml \
> > -b prototype/sdp-v1
> > repo sync -j8
> > cd build
> > make toolchains -j4
> > make all -j$(nproc)
> > make run-only
> > # login and at the prompt:
> > xtest --sdp-basic
> >
> > https://optee.readthedocs.io/en/latest/building/prerequisites.html
> > list dependencies needed to build the above.
> >
> > The tests are pretty basic, mostly checking that a Trusted Application in
> > the secure world can access and manipulate the memory.
>
> - Can we test that the system doesn't crash badly if user provides
> non-secured memory to the users which expect a secure buffer?
>
> - At the same time corresponding entities shouldn't decode data to the
> buffers accessible to the rest of the sytem.
I'll a few tests along that.
Thanks,
Jens
>
> >
> > Cheers,
> > Jens
> >
> > [1] https://lore.kernel.org/dri-devel/20240515112308.10171-1-yong.wu(a)mediatek.com/
> > [2] https://lore.kernel.org/lkml/20220805135330.970-1-olivier.masse(a)nxp.com/
> >
> > Changes since Olivier's post [2]:
> > * Based on Yong Wu's post [1] where much of dma-buf handling is done in
> > the generic restricted heap
> > * Simplifications and cleanup
> > * New commit message for "dma-buf: heaps: add Linaro restricted dmabuf heap
> > support"
> > * Replaced the word "secure" with "restricted" where applicable
> >
> > Etienne Carriere (1):
> > tee: new ioctl to a register tee_shm from a dmabuf file descriptor
> >
> > Jens Wiklander (2):
> > dma-buf: heaps: restricted_heap: add no_map attribute
> > dma-buf: heaps: add Linaro restricted dmabuf heap support
> >
> > Olivier Masse (1):
> > dt-bindings: reserved-memory: add linaro,restricted-heap
> >
> > .../linaro,restricted-heap.yaml | 56 ++++++
> > drivers/dma-buf/heaps/Kconfig | 10 ++
> > drivers/dma-buf/heaps/Makefile | 1 +
> > drivers/dma-buf/heaps/restricted_heap.c | 17 +-
> > drivers/dma-buf/heaps/restricted_heap.h | 2 +
> > .../dma-buf/heaps/restricted_heap_linaro.c | 165 ++++++++++++++++++
> > drivers/tee/tee_core.c | 38 ++++
> > drivers/tee/tee_shm.c | 104 ++++++++++-
> > include/linux/tee_drv.h | 11 ++
> > include/uapi/linux/tee.h | 29 +++
> > 10 files changed, 426 insertions(+), 7 deletions(-)
> > create mode 100644 Documentation/devicetree/bindings/reserved-memory/linaro,restricted-heap.yaml
> > create mode 100644 drivers/dma-buf/heaps/restricted_heap_linaro.c
> >
> > --
> > 2.34.1
> >
>
> --
> With best wishes
> Dmitry
next prev parent reply other threads:[~2024-09-25 7:15 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-30 7:03 [RFC PATCH 0/4] Linaro restricted heap Jens Wiklander
2024-08-30 7:03 ` Jens Wiklander
2024-08-30 7:03 ` [RFC PATCH 1/4] dma-buf: heaps: restricted_heap: add no_map attribute Jens Wiklander
2024-08-30 7:03 ` Jens Wiklander
2024-08-30 8:46 ` Christian König
2024-08-30 8:46 ` Christian König
2024-09-05 6:56 ` Jens Wiklander
2024-09-05 6:56 ` Jens Wiklander
2024-09-05 8:01 ` Christian König
2024-09-05 8:01 ` Christian König
2024-08-30 7:03 ` [RFC PATCH 2/4] tee: new ioctl to a register tee_shm from a dmabuf file descriptor Jens Wiklander
2024-08-30 7:03 ` Jens Wiklander
2024-09-03 17:49 ` T.J. Mercier
2024-09-03 17:49 ` T.J. Mercier
2024-09-04 9:49 ` Jens Wiklander
2024-09-04 9:49 ` Jens Wiklander
2024-08-30 7:03 ` [RFC PATCH 3/4] dt-bindings: reserved-memory: add linaro,restricted-heap Jens Wiklander
2024-08-30 7:03 ` [RFC PATCH 3/4] dt-bindings: reserved-memory: add linaro, restricted-heap Jens Wiklander
2024-08-30 7:03 ` [RFC PATCH 3/4] dt-bindings: reserved-memory: add linaro,restricted-heap Jens Wiklander
2024-08-30 8:20 ` Krzysztof Kozlowski
2024-08-30 8:20 ` Krzysztof Kozlowski
2024-08-30 8:42 ` Jens Wiklander
2024-08-30 8:42 ` [RFC PATCH 3/4] dt-bindings: reserved-memory: add linaro, restricted-heap Jens Wiklander
2024-08-30 8:42 ` [RFC PATCH 3/4] dt-bindings: reserved-memory: add linaro,restricted-heap Jens Wiklander
2024-08-30 7:03 ` [RFC PATCH 4/4] dma-buf: heaps: add Linaro restricted dmabuf heap support Jens Wiklander
2024-08-30 7:03 ` Jens Wiklander
2024-09-03 17:50 ` T.J. Mercier
2024-09-03 17:50 ` T.J. Mercier
2024-09-04 9:44 ` Jens Wiklander
2024-09-04 9:44 ` Jens Wiklander
2024-09-04 21:42 ` T.J. Mercier
2024-09-04 21:42 ` T.J. Mercier
2024-09-10 6:06 ` Jens Wiklander
2024-09-10 6:06 ` Jens Wiklander
2024-09-10 15:08 ` T.J. Mercier
2024-09-10 15:08 ` T.J. Mercier
2024-09-11 5:58 ` Jens Wiklander
2024-09-11 5:58 ` Jens Wiklander
2024-09-23 6:33 ` [RFC PATCH 0/4] Linaro restricted heap Dmitry Baryshkov
2024-09-23 6:33 ` Dmitry Baryshkov
2024-09-24 18:13 ` Andrew Davis
2024-09-24 18:13 ` Andrew Davis
2024-09-24 23:05 ` Dmitry Baryshkov
2024-09-24 23:05 ` Dmitry Baryshkov
2024-09-25 8:51 ` [Linaro-mm-sig] " Christian König
2024-09-25 8:51 ` Christian König
2024-09-25 12:51 ` Dmitry Baryshkov
2024-09-25 12:51 ` Dmitry Baryshkov
2024-09-25 14:01 ` Christian König
2024-09-25 14:01 ` Christian König
2024-09-26 13:47 ` Sumit Garg
2024-09-26 13:47 ` Sumit Garg
2024-09-26 13:52 ` Sumit Garg
2024-09-26 13:52 ` Sumit Garg
2024-09-26 14:02 ` Christian König
2024-09-26 14:02 ` Christian König
2024-09-27 6:16 ` Jens Wiklander
2024-09-27 6:16 ` Jens Wiklander
2024-09-27 19:50 ` Nicolas Dufresne
2024-09-27 19:50 ` Nicolas Dufresne
2024-09-30 6:47 ` Sumit Garg
2024-09-30 6:47 ` Sumit Garg
2024-09-26 14:56 ` Andrew Davis
2024-09-26 14:56 ` Andrew Davis
2024-09-25 7:58 ` Jens Wiklander
2024-09-25 7:58 ` Jens Wiklander
2024-09-25 7:15 ` Jens Wiklander [this message]
2024-09-25 7:15 ` Jens Wiklander
2024-09-25 11:41 ` Dmitry Baryshkov
2024-09-25 11:41 ` Dmitry Baryshkov
2024-09-25 12:53 ` Jens Wiklander
2024-09-25 12:53 ` Jens Wiklander
2024-09-24 22:02 ` Daniel Stone
2024-09-24 22:02 ` Daniel Stone
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=20240925071504.GA3519798@rayden \
--to=jens.wiklander@linaro.org \
--cc=Brian.Starkey@arm.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=benjamin.gaignard@collabora.com \
--cc=christian.koenig@amd.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jstultz@google.com \
--cc=krzk+dt@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=olivier.masse@nxp.com \
--cc=op-tee@lists.trustedfirmware.org \
--cc=robh@kernel.org \
--cc=sumit.garg@linaro.org \
--cc=sumit.semwal@linaro.org \
--cc=thierry.reding@gmail.com \
--cc=tjmercier@google.com \
--cc=yong.wu@mediatek.com \
/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.