<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="text-align:left; direction:ltr;">
<div>On Wed, 2023-09-27 at 16:42 +0200, Joakim Bech wrote:</div>
<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" align="left" width="100%" style="width:100.0%;background:#77FFCC">
<tbody>
<tr>
<td width="9" style="width:7.0pt;background:#EA0621;padding:5.25pt 1.5pt 5.25pt 1.5pt">
</td>
<td width="100%" style="width:100.0%;background:#FFD4D4;padding:5.25pt 3.75pt 5.25pt 11.25pt">
<div>
<p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">
<span lang="EN-US" style="font-size:9.5pt;font-family:"Segoe UI",sans-serif;color:#212121">External email : Please do not click links or open attachments until you have verified the sender or the content.<o:p></o:p></span></p>
</div>
</td>
</tr>
</tbody>
</table>
<!--}-->
<pre>On Mon, Sep 11, 2023 at 10:30:33AM +0800, Yong Wu wrote:</pre>
<pre>> Initialise a mtk_svp heap. Currently just add a null heap, Prepare for</pre>
<pre>> the later patches.</pre>
<pre>> </pre>
<pre>> Signed-off-by: Yong Wu <yong.wu@mediatek.com></pre>
<pre>> ---</pre>
<pre>>  drivers/dma-buf/heaps/Kconfig           |  8 ++</pre>
<pre>>  drivers/dma-buf/heaps/Makefile          |  1 +</pre>
<pre>>  drivers/dma-buf/heaps/mtk_secure_heap.c | 99 +++++++++++++++++++++++++</pre>
<pre>>  3 files changed, 108 insertions(+)</pre>
<pre>>  create mode 100644 drivers/dma-buf/heaps/mtk_secure_heap.c</pre>
<pre>> </pre>
<pre>> diff --git a/drivers/dma-buf/heaps/Kconfig b/drivers/dma-buf/heaps/Kconfig</pre>
<pre>> index a5eef06c4226..729c0cf3eb7c 100644</pre>
<pre>> --- a/drivers/dma-buf/heaps/Kconfig</pre>
<pre>> +++ b/drivers/dma-buf/heaps/Kconfig</pre>
<pre>> @@ -12,3 +12,11 @@ config DMABUF_HEAPS_CMA</pre>
<pre>>    Choose this option to enable dma-buf CMA heap. This heap is backed</pre>
<pre>>    by the Contiguous Memory Allocator (CMA). If your system has these</pre>
<pre>>    regions, you should say Y here.</pre>
<pre>> +</pre>
<pre>> +config DMABUF_HEAPS_MTK_SECURE</pre>
<pre>> +bool "DMA-BUF MediaTek Secure Heap"</pre>
<pre>> +depends on DMABUF_HEAPS && TEE</pre>
<pre>> +help</pre>
<pre>> +  Choose this option to enable dma-buf MediaTek secure heap for Secure</pre>
<pre>> +  Video Path. This heap is backed by TEE client interfaces. If in</pre>
<pre>Although this is intended for SVP right now, this is something that very</pre>
<pre>well could work for other use cases. So, I think I'd not mention "Secure</pre>
<pre>Video Path" and just mention "secure heap".</pre>
</blockquote>
<div><br>
</div>
<div>Thanks. I will remove the "SVP".</div>
<div><br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<pre><br></pre>
<pre>> +  doubt, say N.</pre>
<pre>> diff --git a/drivers/dma-buf/heaps/Makefile b/drivers/dma-buf/heaps/Makefile</pre>
<pre>> index 974467791032..df559dbe33fe 100644</pre>
<pre>> --- a/drivers/dma-buf/heaps/Makefile</pre>
<pre>> +++ b/drivers/dma-buf/heaps/Makefile</pre>
<pre>> @@ -1,3 +1,4 @@</pre>
<pre>>  # SPDX-License-Identifier: GPL-2.0</pre>
<pre>>  obj-$(CONFIG_DMABUF_HEAPS_SYSTEM)+= system_heap.o</pre>
<pre>>  obj-$(CONFIG_DMABUF_HEAPS_CMA)+= cma_heap.o</pre>
<pre>> +obj-$(CONFIG_DMABUF_HEAPS_MTK_SECURE)+= mtk_secure_heap.o</pre>
<pre>> diff --git a/drivers/dma-buf/heaps/mtk_secure_heap.c b/drivers/dma-buf/heaps/mtk_secure_heap.c</pre>
<pre>> new file mode 100644</pre>
<pre>> index 000000000000..bbf1c8dce23e</pre>
<pre>> --- /dev/null</pre>
<pre>> +++ b/drivers/dma-buf/heaps/mtk_secure_heap.c</pre>
<pre>> @@ -0,0 +1,99 @@</pre>
<pre>> +// SPDX-License-Identifier: GPL-2.0</pre>
<pre>> +/*</pre>
<pre>> + * DMABUF mtk_secure_heap exporter</pre>
<pre>> + *</pre>
<pre>> + * Copyright (C) 2023 MediaTek Inc.</pre>
<pre>> + */</pre>
<pre>> +</pre>
<pre>> +#include <linux/dma-buf.h></pre>
<pre>> +#include <linux/dma-heap.h></pre>
<pre>> +#include <linux/err.h></pre>
<pre>> +#include <linux/module.h></pre>
<pre>> +#include <linux/slab.h></pre>
<pre>> +</pre>
<pre>> +/*</pre>
<pre>> + * MediaTek secure (chunk) memory type</pre>
<pre>> + *</pre>
<pre>> + * @KREE_MEM_SEC_CM_TZ: static chunk memory carved out for trustzone.</pre>
<pre>nit: s/trustzone/TrustZone/</pre>
</blockquote>
<div><br>
</div>
<div>Will Fix.</div>
<div><br>
</div>
<div>Thanks.<br>
</div>
<div><br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<pre><br></pre>
<pre>-- </pre>
<pre>// Regards</pre>
<pre>Joakim</pre>
<pre><br></pre>
<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<pre>> + */</pre>
<pre>> +enum kree_mem_type {</pre>
<pre>> +KREE_MEM_SEC_CM_TZ = 1,</pre>
<pre>> +};</pre>
<pre>> +</pre>
<pre>> +struct mtk_secure_heap_buffer {</pre>
<pre>> +struct dma_heap*heap;</pre>
<pre>> +size_tsize;</pre>
<pre>> +};</pre>
<pre>> +</pre>
<pre>> +struct mtk_secure_heap {</pre>
<pre>> +const char*name;</pre>
<pre>> +const enum kree_mem_type mem_type;</pre>
<pre>> +};</pre>
<pre>> +</pre>
<pre>> +static struct dma_buf *</pre>
<pre>> +mtk_sec_heap_allocate(struct dma_heap *heap, size_t size,</pre>
<pre>> +      unsigned long fd_flags, unsigned long heap_flags)</pre>
<pre>> +{</pre>
<pre>> +struct mtk_secure_heap_buffer *sec_buf;</pre>
<pre>> +DEFINE_DMA_BUF_EXPORT_INFO(exp_info);</pre>
<pre>> +struct dma_buf *dmabuf;</pre>
<pre>> +int ret;</pre>
<pre>> +</pre>
<pre>> +sec_buf = kzalloc(sizeof(*sec_buf), GFP_KERNEL);</pre>
<pre>> +if (!sec_buf)</pre>
<pre>> +return ERR_PTR(-ENOMEM);</pre>
<pre>> +</pre>
<pre>> +sec_buf->size = size;</pre>
<pre>> +sec_buf->heap = heap;</pre>
<pre>> +</pre>
<pre>> +exp_info.exp_name = dma_heap_get_name(heap);</pre>
<pre>> +exp_info.size = sec_buf->size;</pre>
<pre>> +exp_info.flags = fd_flags;</pre>
<pre>> +exp_info.priv = sec_buf;</pre>
<pre>> +</pre>
<pre>> +dmabuf = dma_buf_export(&exp_info);</pre>
<pre>> +if (IS_ERR(dmabuf)) {</pre>
<pre>> +ret = PTR_ERR(dmabuf);</pre>
<pre>> +goto err_free_buf;</pre>
<pre>> +}</pre>
<pre>> +</pre>
<pre>> +return dmabuf;</pre>
<pre>> +</pre>
<pre>> +err_free_buf:</pre>
<pre>> +kfree(sec_buf);</pre>
<pre>> +return ERR_PTR(ret);</pre>
<pre>> +}</pre>
<pre>> +</pre>
<pre>> +static const struct dma_heap_ops mtk_sec_heap_ops = {</pre>
<pre>> +.allocate= mtk_sec_heap_allocate,</pre>
<pre>> +};</pre>
<pre>> +</pre>
<pre>> +static struct mtk_secure_heap mtk_sec_heap[] = {</pre>
<pre>> +{</pre>
<pre>> +.name= "mtk_svp",</pre>
<pre>> +.mem_type= KREE_MEM_SEC_CM_TZ,</pre>
<pre>> +},</pre>
<pre>> +};</pre>
<pre>> +</pre>
<pre>> +static int mtk_sec_heap_init(void)</pre>
<pre>> +{</pre>
<pre>> +struct mtk_secure_heap *sec_heap = mtk_sec_heap;</pre>
<pre>> +struct dma_heap_export_info exp_info;</pre>
<pre>> +struct dma_heap *heap;</pre>
<pre>> +unsigned int i;</pre>
<pre>> +</pre>
<pre>> +for (i = 0; i < ARRAY_SIZE(mtk_sec_heap); i++, sec_heap++) {</pre>
<pre>> +exp_info.name = sec_heap->name;</pre>
<pre>> +exp_info.ops = &mtk_sec_heap_ops;</pre>
<pre>> +exp_info.priv = (void *)sec_heap;</pre>
<pre>> +</pre>
<pre>> +heap = dma_heap_add(&exp_info);</pre>
<pre>> +if (IS_ERR(heap))</pre>
<pre>> +return PTR_ERR(heap);</pre>
<pre>> +}</pre>
<pre>> +return 0;</pre>
<pre>> +}</pre>
<pre>> +</pre>
<pre>> +module_init(mtk_sec_heap_init);</pre>
<pre>> +MODULE_DESCRIPTION("MediaTek Secure Heap Driver");</pre>
<pre>> +MODULE_LICENSE("GPL");</pre>
<pre>> -- </pre>
<pre>> 2.25.1</pre>
<pre>> </pre>
</blockquote>
<pre><br></pre>
<pre><br></pre>
</blockquote>
</body>
</html>