Received: by 2002:a05:7412:f690:b0:e2:908c:2ebd with SMTP id ej16csp120744rdb; Wed, 18 Oct 2023 21:46:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGFieRmY8afVR8TeZhdC1uUUg4UP2Dy3PRP8vef6HUxgLQw+0nMZUpxyPejAV//aPLpiuL5 X-Received: by 2002:a05:6870:b50b:b0:1ea:7002:494d with SMTP id v11-20020a056870b50b00b001ea7002494dmr1505411oap.46.1697690810896; Wed, 18 Oct 2023 21:46:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697690810; cv=none; d=google.com; s=arc-20160816; b=xShcvLQFePo8yQCgoQUtCa6XCmhPUV8uoTsfIwlrK/lyusG6O7jZv4NMyxUFDdMoV9 Ec2Cr6vloE76j34m/igSAeobqvlPKx7G2dd8tsIRVijWgBnaowD2Eb08N3Go4sbYHY2Y XMSOCnfY9BilvpxFulNoGqhHCVGh22tUNcLAAEgd8tk/I/ANU+HiBwq/borvJWAywqmN gcIxlbMrE7BiVd6pQspQnr361eQ4bJkaDlBctj8HQEi2MIodn3QwRapwwjQ7gaDry+ff FRxU9tLA+4NNB96XK1kLlVIeiWNf+fdxPfUwfsBVyyt7HkVnKuikShRW/PpgnH6Ure11 4+xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=LLKCqAQkXIt5yyS3YauV6hUjXjexODPbf5Fe1p8Y7gs=; fh=ZrOQFd3HRJ8bgk0Kess++KToM8zhxWFeWiaCKBMF2MA=; b=0DT6wXb3DcXS8y4meJH/psYa9ZDIKFZnMC4IOCgKrHr/MY/VHqWsg4Fosrr0mZhefU xZfyWrIecT0KGhp00RNQOThA/F7wXv+vrt2jm57s3hTKoENNUOez/6wPwqZG1chd/tsi gHyArt8Rct1Cepr39FtM8EtEPW+b+J46K6K5sL12NXC1TzvRstuZUg3rT8SiNvNUw3jW 70Rs1b1qrvC1PDtulaJRtsoRdf5RgonK+9qKyk50m5tyZLhQi9pN7HNojWi5dz24NX3T LOi1q1MqgF61WoAWUjAicSwkTVpFRMaGfEG25tT+IfK0631sG3RZiXrbxuiOCqEqlXIt qRug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=cTuGhnsg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id i4-20020a63d444000000b005b64e8336casi3752308pgj.464.2023.10.18.21.46.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 21:46:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=cTuGhnsg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 4672C8051188; Wed, 18 Oct 2023 21:46:18 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232537AbjJSEqC (ORCPT + 99 others); Thu, 19 Oct 2023 00:46:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231421AbjJSEp6 (ORCPT ); Thu, 19 Oct 2023 00:45:58 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E0747121; Wed, 18 Oct 2023 21:45:55 -0700 (PDT) Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39J47EYO030685; Thu, 19 Oct 2023 04:45:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=LLKCqAQkXIt5yyS3YauV6hUjXjexODPbf5Fe1p8Y7gs=; b=cTuGhnsgxlwDSLqGnKjVLUcHWuDA3XkIITG39wfht2GrX4y/oYPoQYbEQnKcR4smQ6PS LctuHOCD5zKk0x5yOKKgNNUq5UqvTY3PcsXhjLTdjwPrlNeCo9d2wEcDy7X5OjwWQS0+ sY3DnaRJKIqveO9yb5021KtXcemXK/byI16g1qMzZUQlFmHP+hciEpNqsi+t7tq+9Chs jYgDuwyn02VO4+d+9C9w7kJZRjeaGHestuUoru7nO1Bt/NY7wqL1lXGITG0Kngw1rjS4 rxsSRojeH/AsNrnEUFVM/XxedEYrrdM79034cZl3UhGQT8aaX4+3mMtvv76EIoyvGraU Dg== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3ttcuv26mn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Oct 2023 04:45:34 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 39J4jXxi004486 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Oct 2023 04:45:33 GMT Received: from [10.216.19.246] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.39; Wed, 18 Oct 2023 21:45:24 -0700 Message-ID: <5d806772-a2b4-4304-be45-7c2ed2930fcc@quicinc.com> Date: Thu, 19 Oct 2023 10:15:24 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/9] dma-buf: heaps: Initialise MediaTek secure heap Content-Language: en-US To: Yong Wu , Rob Herring , Sumit Semwal , , Matthias Brugger CC: Krzysztof Kozlowski , Conor Dooley , Benjamin Gaignard , Brian Starkey , John Stultz , , AngeloGioacchino Del Regno , , , , , , , , , References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-5-yong.wu@mediatek.com> From: Vijayanand Jitta In-Reply-To: <20230911023038.30649-5-yong.wu@mediatek.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: CPwMUBJQsnSw-RhST_Y5Uy1hTw1cat2n X-Proofpoint-GUID: CPwMUBJQsnSw-RhST_Y5Uy1hTw1cat2n X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-19_02,2023-10-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 mlxscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 mlxlogscore=999 spamscore=0 priorityscore=1501 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310190039 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 18 Oct 2023 21:46:19 -0700 (PDT) On 9/11/2023 8:00 AM, Yong Wu wrote: > Initialise a mtk_svp heap. Currently just add a null heap, Prepare for > the later patches. > > Signed-off-by: Yong Wu > --- > drivers/dma-buf/heaps/Kconfig | 8 ++ > drivers/dma-buf/heaps/Makefile | 1 + > drivers/dma-buf/heaps/mtk_secure_heap.c | 99 +++++++++++++++++++++++++ > 3 files changed, 108 insertions(+) > create mode 100644 drivers/dma-buf/heaps/mtk_secure_heap.c > > diff --git a/drivers/dma-buf/heaps/Kconfig b/drivers/dma-buf/heaps/Kconfig > index a5eef06c4226..729c0cf3eb7c 100644 > --- a/drivers/dma-buf/heaps/Kconfig > +++ b/drivers/dma-buf/heaps/Kconfig > @@ -12,3 +12,11 @@ config DMABUF_HEAPS_CMA > Choose this option to enable dma-buf CMA heap. This heap is backed > by the Contiguous Memory Allocator (CMA). If your system has these > regions, you should say Y here. > + > +config DMABUF_HEAPS_MTK_SECURE > + bool "DMA-BUF MediaTek Secure Heap" > + depends on DMABUF_HEAPS && TEE > + help > + Choose this option to enable dma-buf MediaTek secure heap for Secure > + Video Path. This heap is backed by TEE client interfaces. If in > + doubt, say N. > diff --git a/drivers/dma-buf/heaps/Makefile b/drivers/dma-buf/heaps/Makefile > index 974467791032..df559dbe33fe 100644 > --- a/drivers/dma-buf/heaps/Makefile > +++ b/drivers/dma-buf/heaps/Makefile > @@ -1,3 +1,4 @@ > # SPDX-License-Identifier: GPL-2.0 > obj-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o > obj-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o > +obj-$(CONFIG_DMABUF_HEAPS_MTK_SECURE) += mtk_secure_heap.o > diff --git a/drivers/dma-buf/heaps/mtk_secure_heap.c b/drivers/dma-buf/heaps/mtk_secure_heap.c > new file mode 100644 > index 000000000000..bbf1c8dce23e > --- /dev/null > +++ b/drivers/dma-buf/heaps/mtk_secure_heap.c > @@ -0,0 +1,99 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * DMABUF mtk_secure_heap exporter > + * > + * Copyright (C) 2023 MediaTek Inc. > + */ > + > +#include > +#include > +#include > +#include > +#include > + > +/* > + * MediaTek secure (chunk) memory type > + * > + * @KREE_MEM_SEC_CM_TZ: static chunk memory carved out for trustzone. > + */ > +enum kree_mem_type { > + KREE_MEM_SEC_CM_TZ = 1, > +}; > + > +struct mtk_secure_heap_buffer { > + struct dma_heap *heap; > + size_t size; > +}; > + > +struct mtk_secure_heap { > + const char *name; > + const enum kree_mem_type mem_type; > +}; > + > +static struct dma_buf * > +mtk_sec_heap_allocate(struct dma_heap *heap, size_t size, > + unsigned long fd_flags, unsigned long heap_flags) > +{ > + struct mtk_secure_heap_buffer *sec_buf; > + DEFINE_DMA_BUF_EXPORT_INFO(exp_info); > + struct dma_buf *dmabuf; > + int ret; > + > + sec_buf = kzalloc(sizeof(*sec_buf), GFP_KERNEL); As we know, kzalloc can only allocate 4MB at max. So, secure heap has this limitation. can we have a way to allocate more memory in secure heap ? maybe similar to how system heap does? Thanks, Vijay > + if (!sec_buf) > + return ERR_PTR(-ENOMEM); > + > + sec_buf->size = size; > + sec_buf->heap = heap; > + > + exp_info.exp_name = dma_heap_get_name(heap); > + exp_info.size = sec_buf->size; > + exp_info.flags = fd_flags; > + exp_info.priv = sec_buf; > + > + dmabuf = dma_buf_export(&exp_info); > + if (IS_ERR(dmabuf)) { > + ret = PTR_ERR(dmabuf); > + goto err_free_buf; > + } > + > + return dmabuf; > + > +err_free_buf: > + kfree(sec_buf); > + return ERR_PTR(ret); > +} > + > +static const struct dma_heap_ops mtk_sec_heap_ops = { > + .allocate = mtk_sec_heap_allocate, > +}; > + > +static struct mtk_secure_heap mtk_sec_heap[] = { > + { > + .name = "mtk_svp", > + .mem_type = KREE_MEM_SEC_CM_TZ, > + }, > +}; > + > +static int mtk_sec_heap_init(void) > +{ > + struct mtk_secure_heap *sec_heap = mtk_sec_heap; > + struct dma_heap_export_info exp_info; > + struct dma_heap *heap; > + unsigned int i; > + > + for (i = 0; i < ARRAY_SIZE(mtk_sec_heap); i++, sec_heap++) { > + exp_info.name = sec_heap->name; > + exp_info.ops = &mtk_sec_heap_ops; > + exp_info.priv = (void *)sec_heap; > + > + heap = dma_heap_add(&exp_info); > + if (IS_ERR(heap)) > + return PTR_ERR(heap); > + } > + return 0; > +} > + > +module_init(mtk_sec_heap_init); > +MODULE_DESCRIPTION("MediaTek Secure Heap Driver"); > +MODULE_LICENSE("GPL");