This adds the binding for describing a CMA memory for MediaTek SVP(Secure
Video Path).
Signed-off-by: Yong Wu <yong.wu@mediatek.com>
---
.../mediatek,secure_cma_chunkmem.yaml | 42 +++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml
diff --git a/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml b/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml
new file mode 100644
index 000000000000..cc10e00d35c4
--- /dev/null
+++ b/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek Secure Video Path Reserved Memory
+
+description:
+ This binding describes the reserved memory for secure video path.
+
+maintainers:
+ - Yong Wu <yong.wu@mediatek.com>
+
+allOf:
+ - $ref: reserved-memory.yaml
+
+properties:
+ compatible:
+ const: mediatek,secure_cma_chunkmem
+
+required:
+ - compatible
+ - reg
+ - reusable
+
+unevaluatedProperties: false
+
+examples:
+ - |
+
+ reserved-memory {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ reserved-memory@80000000 {
+ compatible = "mediatek,secure_cma_chunkmem";
+ reusable;
+ reg = <0x80000000 0x18000000>;
+ };
+ };
--
2.25.1
On 9/11/2023 8:00 AM, Yong Wu wrote: > This adds the binding for describing a CMA memory for MediaTek SVP(Secure > Video Path). > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > --- > .../mediatek,secure_cma_chunkmem.yaml | 42 +++++++++++++++++++ > 1 file changed, 42 insertions(+) > create mode 100644 Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml > > diff --git a/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml b/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml > new file mode 100644 > index 000000000000..cc10e00d35c4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml > @@ -0,0 +1,42 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: MediaTek Secure Video Path Reserved Memory > + > +description: > + This binding describes the reserved memory for secure video path. > + > +maintainers: > + - Yong Wu <yong.wu@mediatek.com> > + > +allOf: > + - $ref: reserved-memory.yaml > + > +properties: > + compatible: > + const: mediatek,secure_cma_chunkmem > + > +required: > + - compatible > + - reg > + - reusable > + > +unevaluatedProperties: false > + > +examples: > + - | > + > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + reserved-memory@80000000 { > + compatible = "mediatek,secure_cma_chunkmem"; > + reusable; > + reg = <0x80000000 0x18000000>; > + }; > + }; Instead of having a vendor specific binding for cma area, How about retrieving https://lore.kernel.org/lkml/1594948208-4739-1-git-send-email-hayashi.kunihiko@socionext.com/ ? dma_heap_add_cma can just associate cma region and create a heap. So, we can reuse cma heap code for allocation instead of replicating that code here. Thanks, Vijay
On Thu, 2023-10-19 at 10:16 +0530, Vijayanand Jitta wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > > > On 9/11/2023 8:00 AM, Yong Wu wrote: > > This adds the binding for describing a CMA memory for MediaTek > SVP(Secure > > Video Path). > > > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > > --- > > .../mediatek,secure_cma_chunkmem.yaml | 42 > +++++++++++++++++++ > > 1 file changed, 42 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > > > > diff --git a/Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > b/Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > > new file mode 100644 > > index 000000000000..cc10e00d35c4 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > > @@ -0,0 +1,42 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: > http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: MediaTek Secure Video Path Reserved Memory > > + > > +description: > > + This binding describes the reserved memory for secure video > path. > > + > > +maintainers: > > + - Yong Wu <yong.wu@mediatek.com> > > + > > +allOf: > > + - $ref: reserved-memory.yaml > > + > > +properties: > > + compatible: > > + const: mediatek,secure_cma_chunkmem > > + > > +required: > > + - compatible > > + - reg > > + - reusable > > + > > +unevaluatedProperties: false > > + > > +examples: > > + - | > > + > > + reserved-memory { > > + #address-cells = <1>; > > + #size-cells = <1>; > > + ranges; > > + > > + reserved-memory@80000000 { > > + compatible = "mediatek,secure_cma_chunkmem"; > > + reusable; > > + reg = <0x80000000 0x18000000>; > > + }; > > + }; > > Instead of having a vendor specific binding for cma area, How about > retrieving > https://lore.kernel.org/lkml/1594948208-4739-1-git-send-email-hayashi.kunihiko@socionext.com/ > ? > dma_heap_add_cma can just associate cma region and create a heap. So, > we can reuse cma heap > code for allocation instead of replicating that code here. > Thanks for the reference. I guess we can't use it. There are two reasons: a) The secure heap driver is a pure software driver and we have no device for it, therefore we cannot call dma_heap_add_cma. b) The CMA area here is dynamic for SVP. Normally this CMA can be used in the kernel. In the SVP case we use cma_alloc to get it and pass the entire CMA physical start address and size into TEE to protect the CMA region. The original CMA heap cannot help with the TEE part. Thanks. > Thanks, > Vijay > > >
On 10/20/2023 3:20 PM, Yong Wu (吴勇) wrote: > On Thu, 2023-10-19 at 10:16 +0530, Vijayanand Jitta wrote: >> >> Instead of having a vendor specific binding for cma area, How about >> retrieving >> > https://lore.kernel.org/lkml/1594948208-4739-1-git-send-email-hayashi.kunihiko@socionext.com/ >> ? >> dma_heap_add_cma can just associate cma region and create a heap. So, >> we can reuse cma heap >> code for allocation instead of replicating that code here. >> > > Thanks for the reference. I guess we can't use it. There are two > reasons: > > a) The secure heap driver is a pure software driver and we have no > device for it, therefore we cannot call dma_heap_add_cma. > Hi Yong, We're considering using struct cma as the function argument to dma_heap_add_cma() rather than struct device. Would this help resolve the problem of usage with dma_heap_add_cma()? > b) The CMA area here is dynamic for SVP. Normally this CMA can be used > in the kernel. In the SVP case we use cma_alloc to get it and pass the > entire CMA physical start address and size into TEE to protect the CMA > region. The original CMA heap cannot help with the TEE part. > Referring the conversation at https://lore.kernel.org/lkml/7a2995de23c24ef22c071c6976c02b97e9b50126.camel@mediatek.com/; since we're considering abstracting secure mem ops, would it make sense to use the default CMA heap ops (cma_heap_ops), allocate buffers from it and secure each allocated buffer? Thanks, Jaskaran. > Thanks. > >> Thanks, >> Vijay >> >> >>
On Wed, 2023-11-01 at 11:20 +0530, Jaskaran Singh wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > On 10/20/2023 3:20 PM, Yong Wu (吴勇) wrote: > > On Thu, 2023-10-19 at 10:16 +0530, Vijayanand Jitta wrote: > >> > >> Instead of having a vendor specific binding for cma area, How > about > >> retrieving > >> > > > https://lore.kernel.org/lkml/1594948208-4739-1-git-send-email-hayashi.kunihiko@socionext.com/ > >> ? > >> dma_heap_add_cma can just associate cma region and create a heap. > So, > >> we can reuse cma heap > >> code for allocation instead of replicating that code here. > >> > > > > Thanks for the reference. I guess we can't use it. There are two > > reasons: > > > > a) The secure heap driver is a pure software driver and we have no > > device for it, therefore we cannot call dma_heap_add_cma. > > > > Hi Yong, > > We're considering using struct cma as the function argument to > dma_heap_add_cma() rather than struct device. Would this help > resolve the problem of usage with dma_heap_add_cma()? Yes. If we use "struct cma", I guess it works. > > > b) The CMA area here is dynamic for SVP. Normally this CMA can be > used > > in the kernel. In the SVP case we use cma_alloc to get it and pass > the > > entire CMA physical start address and size into TEE to protect the > CMA > > region. The original CMA heap cannot help with the TEE part. > > > > Referring the conversation at > https://lore.kernel.org/lkml/7a2995de23c24ef22c071c6976c02b97e9b50126.camel@mediatek.com/ > ; > > since we're considering abstracting secure mem ops, would it make > sense > to use the default CMA heap ops (cma_heap_ops), allocate buffers from > it > and secure each allocated buffer? Then it looks you also need tee operation like tee_client_open_session and tee_client_invoke_func, right? It seems we also need change a bit for "cma_heap_allocate" to allow cma support operations from secure heap. I will send a v2 to move the discussion forward. The v2 is based on our case, It won't include the cma part. > > Thanks, > Jaskaran. > > > Thanks. > > > >> Thanks, > >> Vijay > >> > >> > >> >
On 11/6/2023 11:26 AM, Yong Wu (吴勇) wrote: > On Wed, 2023-11-01 at 11:20 +0530, Jaskaran Singh wrote: >> >> External email : Please do not click links or open attachments until >> you have verified the sender or the content. >> On 10/20/2023 3:20 PM, Yong Wu (吴勇) wrote: >>> On Thu, 2023-10-19 at 10:16 +0530, Vijayanand Jitta wrote: >>>> >>>> Instead of having a vendor specific binding for cma area, How >> about >>>> retrieving >>>> >>> >> https://lore.kernel.org/lkml/1594948208-4739-1-git-send-email-hayashi.kunihiko@socionext.com/ >>>> ? >>>> dma_heap_add_cma can just associate cma region and create a heap. >> So, >>>> we can reuse cma heap >>>> code for allocation instead of replicating that code here. >>>> >>> >>> Thanks for the reference. I guess we can't use it. There are two >>> reasons: >>> >>> a) The secure heap driver is a pure software driver and we have no >>> device for it, therefore we cannot call dma_heap_add_cma. >>> >> >> Hi Yong, >> >> We're considering using struct cma as the function argument to >> dma_heap_add_cma() rather than struct device. Would this help >> resolve the problem of usage with dma_heap_add_cma()? > > Yes. If we use "struct cma", I guess it works. > Great; I've posted a v2[1] for the API incorporating this change. Thanks, Jaskaran. [1] https://lore.kernel.org/lkml/20231117100337.5215-1-quic_jasksing@quicinc.com/
On Mon, Sep 11, 2023 at 10:30:37AM +0800, Yong Wu wrote: > This adds the binding for describing a CMA memory for MediaTek SVP(Secure > Video Path). CMA is a Linux thing. How is this related to CMA? > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > --- > .../mediatek,secure_cma_chunkmem.yaml | 42 +++++++++++++++++++ > 1 file changed, 42 insertions(+) > create mode 100644 Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml > > diff --git a/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml b/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml > new file mode 100644 > index 000000000000..cc10e00d35c4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/reserved-memory/mediatek,secure_cma_chunkmem.yaml > @@ -0,0 +1,42 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: MediaTek Secure Video Path Reserved Memory What makes this specific to Mediatek? Secure video path is fairly common, right? > + > +description: > + This binding describes the reserved memory for secure video path. > + > +maintainers: > + - Yong Wu <yong.wu@mediatek.com> > + > +allOf: > + - $ref: reserved-memory.yaml > + > +properties: > + compatible: > + const: mediatek,secure_cma_chunkmem > + > +required: > + - compatible > + - reg > + - reusable > + > +unevaluatedProperties: false > + > +examples: > + - | > + > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + reserved-memory@80000000 { > + compatible = "mediatek,secure_cma_chunkmem"; > + reusable; > + reg = <0x80000000 0x18000000>; > + }; > + }; > -- > 2.25.1 >
Hi Rob, Thanks for your review. On Mon, 2023-09-11 at 10:44 -0500, Rob Herring wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > On Mon, Sep 11, 2023 at 10:30:37AM +0800, Yong Wu wrote: > > This adds the binding for describing a CMA memory for MediaTek > SVP(Secure > > Video Path). > > CMA is a Linux thing. How is this related to CMA? > > > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > > --- > > .../mediatek,secure_cma_chunkmem.yaml | 42 > +++++++++++++++++++ > > 1 file changed, 42 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > > > > diff --git a/Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > b/Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > > new file mode 100644 > > index 000000000000..cc10e00d35c4 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/reserved- > memory/mediatek,secure_cma_chunkmem.yaml > > @@ -0,0 +1,42 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: > http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: MediaTek Secure Video Path Reserved Memory > > What makes this specific to Mediatek? Secure video path is fairly > common, right? Here we just reserve a buffer and would like to create a dma-buf secure heap for SVP, then the secure engines(Vcodec and DRM) could prepare secure buffer through it. But the heap driver is pure SW driver, it is not platform device and we don't have a corresponding HW unit for it. Thus I don't think I could create a platform dtsi node and use "memory-region" pointer to the region. I used RESERVEDMEM_OF_DECLARE currently(The code is in [9/9]). Sorry if this is not right. Then in our usage case, is there some similar method to do this? or any other suggestion? Appreciate in advance. > > > + > > +description: > > + This binding describes the reserved memory for secure video > path. > > + > > +maintainers: > > + - Yong Wu <yong.wu@mediatek.com> > > + > > +allOf: > > + - $ref: reserved-memory.yaml > > + > > +properties: > > + compatible: > > + const: mediatek,secure_cma_chunkmem > > + > > +required: > > + - compatible > > + - reg > > + - reusable > > + > > +unevaluatedProperties: false > > + > > +examples: > > + - | > > + > > + reserved-memory { > > + #address-cells = <1>; > > + #size-cells = <1>; > > + ranges; > > + > > + reserved-memory@80000000 { > > + compatible = "mediatek,secure_cma_chunkmem"; > > + reusable; > > + reg = <0x80000000 0x18000000>; > > + }; > > + }; > > -- > > 2.25.1 > >
On 12/09/2023 08:16, Yong Wu (吴勇) wrote: > Hi Rob, > > Thanks for your review. > > On Mon, 2023-09-11 at 10:44 -0500, Rob Herring wrote: >> >> External email : Please do not click links or open attachments until >> you have verified the sender or the content. >> On Mon, Sep 11, 2023 at 10:30:37AM +0800, Yong Wu wrote: >>> This adds the binding for describing a CMA memory for MediaTek >> SVP(Secure >>> Video Path). >> >> CMA is a Linux thing. How is this related to CMA? > >>> >>> Signed-off-by: Yong Wu <yong.wu@mediatek.com> >>> --- >>> .../mediatek,secure_cma_chunkmem.yaml | 42 >> +++++++++++++++++++ >>> 1 file changed, 42 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/reserved- >> memory/mediatek,secure_cma_chunkmem.yaml >>> >>> diff --git a/Documentation/devicetree/bindings/reserved- >> memory/mediatek,secure_cma_chunkmem.yaml >> b/Documentation/devicetree/bindings/reserved- >> memory/mediatek,secure_cma_chunkmem.yaml >>> new file mode 100644 >>> index 000000000000..cc10e00d35c4 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/reserved- >> memory/mediatek,secure_cma_chunkmem.yaml >>> @@ -0,0 +1,42 @@ >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>> +%YAML 1.2 >>> +--- >>> +$id: >> http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml# >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> + >>> +title: MediaTek Secure Video Path Reserved Memory >> >> What makes this specific to Mediatek? Secure video path is fairly >> common, right? > > Here we just reserve a buffer and would like to create a dma-buf secure > heap for SVP, then the secure engines(Vcodec and DRM) could prepare > secure buffer through it. > > But the heap driver is pure SW driver, it is not platform device and All drivers are pure SW. > we don't have a corresponding HW unit for it. Thus I don't think I > could create a platform dtsi node and use "memory-region" pointer to > the region. I used RESERVEDMEM_OF_DECLARE currently(The code is in > [9/9]). Sorry if this is not right. If this is not for any hardware and you already understand this (since you cannot use other bindings) then you cannot have custom bindings for it either. > > Then in our usage case, is there some similar method to do this? or > any other suggestion? Don't stuff software into DTS. Best regards, Krzysztof
On 12/09/2023 9:28 am, Krzysztof Kozlowski wrote: > On 12/09/2023 08:16, Yong Wu (吴勇) wrote: >> Hi Rob, >> >> Thanks for your review. >> >> On Mon, 2023-09-11 at 10:44 -0500, Rob Herring wrote: >>> >>> External email : Please do not click links or open attachments until >>> you have verified the sender or the content. >>> On Mon, Sep 11, 2023 at 10:30:37AM +0800, Yong Wu wrote: >>>> This adds the binding for describing a CMA memory for MediaTek >>> SVP(Secure >>>> Video Path). >>> >>> CMA is a Linux thing. How is this related to CMA? >> >>>> >>>> Signed-off-by: Yong Wu <yong.wu@mediatek.com> >>>> --- >>>> .../mediatek,secure_cma_chunkmem.yaml | 42 >>> +++++++++++++++++++ >>>> 1 file changed, 42 insertions(+) >>>> create mode 100644 Documentation/devicetree/bindings/reserved- >>> memory/mediatek,secure_cma_chunkmem.yaml >>>> >>>> diff --git a/Documentation/devicetree/bindings/reserved- >>> memory/mediatek,secure_cma_chunkmem.yaml >>> b/Documentation/devicetree/bindings/reserved- >>> memory/mediatek,secure_cma_chunkmem.yaml >>>> new file mode 100644 >>>> index 000000000000..cc10e00d35c4 >>>> --- /dev/null >>>> +++ b/Documentation/devicetree/bindings/reserved- >>> memory/mediatek,secure_cma_chunkmem.yaml >>>> @@ -0,0 +1,42 @@ >>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>>> +%YAML 1.2 >>>> +--- >>>> +$id: >>> http://devicetree.org/schemas/reserved-memory/mediatek,secure_cma_chunkmem.yaml# >>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>>> + >>>> +title: MediaTek Secure Video Path Reserved Memory >>> >>> What makes this specific to Mediatek? Secure video path is fairly >>> common, right? >> >> Here we just reserve a buffer and would like to create a dma-buf secure >> heap for SVP, then the secure engines(Vcodec and DRM) could prepare >> secure buffer through it. >> >> But the heap driver is pure SW driver, it is not platform device and > > All drivers are pure SW. > >> we don't have a corresponding HW unit for it. Thus I don't think I >> could create a platform dtsi node and use "memory-region" pointer to >> the region. I used RESERVEDMEM_OF_DECLARE currently(The code is in >> [9/9]). Sorry if this is not right. > > If this is not for any hardware and you already understand this (since > you cannot use other bindings) then you cannot have custom bindings for > it either. > >> >> Then in our usage case, is there some similar method to do this? or >> any other suggestion? > > Don't stuff software into DTS. Aren't most reserved-memory bindings just software policy if you look at it that way, though? IIUC this is a pool of memory that is visible and available to the Non-Secure OS, but is fundamentally owned by the Secure TEE, and pages that the TEE allocates from it will become physically inaccessible to the OS. Thus the platform does impose constraints on how the Non-Secure OS may use it, and per the rest of the reserved-memory bindings, describing it as a "reusable" reservation seems entirely appropriate. If anything that's *more* platform-related and so DT-relevant than typical arbitrary reservations which just represent "save some memory to dedicate to a particular driver" and don't actually bear any relationship to firmware or hardware at all. However, the fact that Linux's implementation of how to reuse reserved memory areas is called CMA is indeed still irrelevant and has no place in the binding itself. Thanks, Robin.
© 2016 - 2024 Red Hat, Inc.