From patchwork Fri Aug 5 13:53:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olivier Masse X-Patchwork-Id: 596074 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E57BBC25B08 for ; Fri, 5 Aug 2022 13:53:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240691AbiHENxs (ORCPT ); Fri, 5 Aug 2022 09:53:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240575AbiHENxq (ORCPT ); Fri, 5 Aug 2022 09:53:46 -0400 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150088.outbound.protection.outlook.com [40.107.15.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09EA543E49; Fri, 5 Aug 2022 06:53:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X5qXrTKn7daTHKbJa7mM96jeRPg0qt9AFv73wtnFmrHqiWtyFw7W4+isbochR8vccbIjxtHqX6Woc9GUFF0HDCMvVa3vi8YWQyqbWWh1h/JNP+YtUyH8Z03zRPiMQ8Evt2exX3y2MEY/zeY03nVcbqgG1nqk/NaQ1IyRTgbJmC+xcxvcJNUiSqRUWiVfyc776dHhLFPJ8ZbrTQ0j7c7+woeOU6We89Su7dYTxjUgsuvvfL6X6QEsfWpSc5sSOdAJnJtcs9ssvTxaRDN1DC8DnHN2E0/y8E6V5z6kSeIUmSR1OlryAI0NC/cv+pQCbzaSQgqMgtqOexNoAflOSc3K/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=b9DbIj77FK3ITEXCLZsBxQ/2jkHuZxm5ahG3BrwDiXY=; b=QUEzycO/6bO6E7iEp4zQzN4bhEf7HBXvI6h+v/tiKGgmb66S2jbaO/TLF2nuroT9HHMucX39u2GWs+VCjOFKZJQGwCt9Fr9BY+vv72DTd+WLVuoKjMxhxziTbDPJ77ti4JdVGXWjxs+v+bulWawMErCsEdlYUWgvR1edgzWVJZvlo6eYUpaAbIkQ3icY9hwL3GVb6SxHUl5E8c9ij2mTQ9zTx2XnIR/jnMAm9b8aIKAr8ycu/2PymTKjk14AAxoixd2MOI0vr8SUTNJKp6ImQ5vA4LOEV2wiOwbTEBC3eWriwTjgcxCklREFJOxDmYz6erkhXtJOKYC3Fr2XCzn2Mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b9DbIj77FK3ITEXCLZsBxQ/2jkHuZxm5ahG3BrwDiXY=; b=jI1yxa/XG0PGULOd6dgTOt/jcOFZUCI/9w55EbN7RP4i6pCKxifMhekSpZjt1Jy+3YHlQB+Bm5/TPzHrzBWDFhMVZpdhxCEdePifcZluBJviOYGqfD/+4nl1UKw1SaJFDjw/wyGUmF2bZACXSLMvJ6ssllNtcXxiGJiI4X/3k1M= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6743.eurprd04.prod.outlook.com (2603:10a6:20b:f1::11) by AM6PR04MB5861.eurprd04.prod.outlook.com (2603:10a6:20b:a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Fri, 5 Aug 2022 13:53:39 +0000 Received: from AM6PR04MB6743.eurprd04.prod.outlook.com ([fe80::4cae:16ea:e349:6532]) by AM6PR04MB6743.eurprd04.prod.outlook.com ([fe80::4cae:16ea:e349:6532%3]) with mapi id 15.20.5504.014; Fri, 5 Aug 2022 13:53:39 +0000 From: Olivier Masse To: sumit.semwal@linaro.org, benjamin.gaignard@collabora.com, Brian.Starkey@arm.com, christian.koenig@amd.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org Cc: clement.faure@nxp.com, olivier.masse@nxp.com Subject: [PATCH 1/3] dma-buf: heaps: add Linaro secure dmabuf heap support Date: Fri, 5 Aug 2022 15:53:28 +0200 Message-Id: <20220805135330.970-2-olivier.masse@nxp.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20220805135330.970-1-olivier.masse@nxp.com> References: <20220805135330.970-1-olivier.masse@nxp.com> X-ClientProxiedBy: AS4P190CA0017.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d0::7) To AM6PR04MB6743.eurprd04.prod.outlook.com (2603:10a6:20b:f1::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b47709b2-79e9-4b1b-5982-08da76e9e67c X-MS-TrafficTypeDiagnostic: AM6PR04MB5861:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GA2xkLLyu8sKUW0UYlgZBT3Lz05iPG3X4jUFsFs0hyUgaIwa3uQwVE6ne0hpHiZLYzpBSZeQW6CubHIdpO18/343v5kjEwwWJ8IqRZhQJAeyg2DvEwkopBzoudUckl5NxPWQdDE4BZeTkRbkNfiDV8Q5YK8yt3F/xEqXwGnIMFyT21AdABVxOVIdkT+QA2AFGgOYUqY+sD4HfhL47ZNIXtbZ/a7ehGEjRwKyaPPSOIy7H5Yms4eSnHF7UCR5AYSaf1aWSv8hjHfqZclPoYZzfZRBZQCGMKcbALJq2uw0kQZy2sjAZObMSlEFB95EkPtOR5BovEHYSFthcpd4T2sIC/4Nw6f+RMJm8N+2ehr3eiCEaw3DXVssbl1frbtEEqPiE6B7HrPAZZaMaOYrg4LviJYMA1seQ9MSSV6X/WaU1U8sokeaj97sMnD9rDPNfaHUXyn4S3vRAYhaH1vZcHjtxpkSfhuz5D4Scwsg5lq63BFr7Y3j9NzHilDnv+OvDflgRcK+gvPKPm+XGPEDo8CerhXmIVvpUSeJ7KGpvDsDX5eYapcNEdL7nqnh2Nb0fHCapi4BmmbDYlspH74aGargxI7misnH7jNd/dLgHnQJ6Nz4g8sBIKdrgUF8r+qHt7fRoBE/xohdMjwMichYYpMqqjHaxlbRguBlDVHgYZJhBKOio2BfPuUglvXWXe+siLLIRZA/pPeBgkf0TPN/xup0hDi3rIy30WzKOx3jFjmKV4VLG97wgQabcapeKutrL9SdKpqSrYcKzwby6ipQWaf9vY8qQbolJirtDXxta6DU/XXg5+18HnBawElEzYCho+Mt X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6743.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(346002)(366004)(39860400002)(136003)(376002)(86362001)(36756003)(38350700002)(38100700002)(6506007)(6666004)(6512007)(55236004)(83380400001)(2616005)(26005)(41300700001)(1076003)(186003)(478600001)(52116002)(66556008)(316002)(4326008)(66946007)(6486002)(8676002)(30864003)(66476007)(5660300002)(44832011)(2906002)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0W3zlTTEnx6E5R2uwip1Rlz8RD2RIq6EorUvUU7zkiIwzjMJL6DHe5oGleIaqGg2rpfOU0Gq0DizKeexFTm1cFE2Fu3EG+GcWB2dpzBIKB0gPyoXjjkZSI2ZOjyZh8aFbYxeezsqZyvekHVwFHXQbZWRVfaOreMjrgHRZxDVbBcCK7s6P5vu7hcytqN6CGoLq3fjPTwphKpLmevug/2rd8+aBA4FOLNVaaKGaHPxpQpGINqd/U9bOCy0bLB3gfT6Q+dgeJESjZOLTS1UkY9bKyOee/rp7p5v/NA310INeiB77FQ6vQGzDy89KqT7wmMR7GdphTiLND7rW30OLZaRV6Qg/VQAcg2BvS50Qn2D+VNwKrL75TXggknIFAiCBbIOwe6WoASe8h1RHElCZjatMfzm/zaRsF0iOHP965f0FWPZCYGnHFTn31aMPuSBnu+i7RGuuNLFvMG/jaiTvJ06XOIJ0SlTm65rIfSN+h5zoT68iBixUntt46ex592l/0JtC9NJ+NYxSyuwXsbG/lGuTkvXmnYfweKjVDZkZDikIFjztg/og0exhBc9JTv9m1w4bOzPZFb7KW/gmPKFAPbYxWQ2ztcpt2/UG6IXntmaROMnD7VwMLTv8fqwmCyOgBiocKQ40kz078eU6R1kV7ySkl0ko5B05ABTfcZHMrJkhLbJBZTUBdmSkfEgW/UGz7tZHiqO9IXX7qjVALjj9lAff3KeredhaW4Ro4mYLqk+JC4dR9awxSJ3tJBXh5HPIuFhKJQ7+uSIEPjUE2rT3aQmOxrW3t2u74uijCFmp0RCXhPFzb4A/vTB52C7NKrPXSp+tg+w4DxrkOi4uyo92uWXdKjMv4zfm1Pmp9zuTd295PCqaBFSxbI7NBZgUy5SAtDK6TS52CDMQNwbs14ozvDBnvVMcRB4cFW1oX8M7VtM+Hxjj325MyMRS14mpSSyYXxI5UHUdF6GgvFnACdmjvXc6/ImDTR1XOVncbl/at7iqlXHjI+vV/ARLWsPWce1GQUE3KSjevpT53epi16P8sozteJq6aLaHgWDT7KqlFEpIUHp5T/gdonBdhch5GLWyi6+1G5wN8+EPAoPsoUjqBz2PJh0GIhfPFnKUte5v23zw9CKs0LZSy6NpDgdvnhpQcF3OBn9ulJB/xEjFiIuyXtDqX9kV6193vXi4Jm928Sh39zwLLVNoVVRDhUXh0jalLfSrB7WlKHKeKiHacVsNkKQzNj0l6cHqpOIwetI/nh07jV6lzDeqJHgXhB3AoE6aF55SQCf9dIl7Xh3SMQMKx+rZchD/+JwZm5SerLfoXQlzeos/WJ/x02gLWcJTwMv0Vqyu6GWEyi3KFoFCB/yv57Cjl9hTrI1T3XA4rmiPjdaeP5jnFSBH1jo+M+DNona8OzeWaFdKW/u6IpNwqNQUPsUzoQK44K2BZpJ6eYjxCqP/ij5v9QmU7YW1UIS19rqtif/LBL2NIdaT7kgCQLCOWjJfHuyAylSSD8I45CrQXglV8cUFqYzTJyPhZ0oJzHKoJkp2Br3MISP015w8GD0d9z0R8dU6mX4T4U93H8RA3XQTQ27xfiRX9hAwqavZYHR53Q76ve3EB/7GqkgDLx4Nc/Zbg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b47709b2-79e9-4b1b-5982-08da76e9e67c X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6743.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Aug 2022 13:53:39.7087 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BGDpBwap/3JRarZfIVX1WYlIA4ptGIxxjaJDMEiVAAuho+GAA8HoQc/nkqYEvdO4NaJmgzxCmMahq4WU/hN3ew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5861 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org add Linaro secure heap bindings: linaro,secure-heap use genalloc to allocate/free buffer from buffer pool. buffer pool info is from dts. use sg_table instore the allocated memory info, the length of sg_table is 1. implement secure_heap_buf_ops to implement buffer share in difference device: 1. Userspace passes this fd to all drivers it wants this buffer to share with: First the filedescriptor is converted to a &dma_buf using dma_buf_get(). Then the buffer is attached to the device using dma_buf_attach(). 2. Once the buffer is attached to all devices userspace can initiate DMA access to the shared buffer. In the kernel this is done by calling dma_buf_map_attachment() 3. get sg_table with dma_buf_map_attachment in difference device. Signed-off-by: Olivier Masse --- drivers/dma-buf/heaps/Kconfig | 9 + drivers/dma-buf/heaps/Makefile | 1 + drivers/dma-buf/heaps/secure_heap.c | 357 ++++++++++++++++++++++++++++ 3 files changed, 367 insertions(+) create mode 100644 drivers/dma-buf/heaps/secure_heap.c diff --git a/drivers/dma-buf/heaps/Kconfig b/drivers/dma-buf/heaps/Kconfig index 3782eeeb91c0..c9070c728b9a 100644 --- a/drivers/dma-buf/heaps/Kconfig +++ b/drivers/dma-buf/heaps/Kconfig @@ -20,3 +20,12 @@ config DMABUF_HEAPS_DSP Choose this option to enable the dsp dmabuf heap. The dsp heap is allocated by gen allocater. it's allocated according the dts. If in doubt, say Y. + +config DMABUF_HEAPS_SECURE + tristate "DMA-BUF Secure Heap" + depends on DMABUF_HEAPS + help + Choose this option to enable the secure dmabuf heap. The secure heap + pools are defined according to the DT. Heaps are allocated + in the pools using gen allocater. + If in doubt, say Y. diff --git a/drivers/dma-buf/heaps/Makefile b/drivers/dma-buf/heaps/Makefile index 29733f84c354..863ef10056a3 100644 --- a/drivers/dma-buf/heaps/Makefile +++ b/drivers/dma-buf/heaps/Makefile @@ -2,3 +2,4 @@ obj-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o obj-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o obj-$(CONFIG_DMABUF_HEAPS_DSP) += dsp_heap.o +obj-$(CONFIG_DMABUF_HEAPS_SECURE) += secure_heap.o diff --git a/drivers/dma-buf/heaps/secure_heap.c b/drivers/dma-buf/heaps/secure_heap.c new file mode 100644 index 000000000000..25b3629613f3 --- /dev/null +++ b/drivers/dma-buf/heaps/secure_heap.c @@ -0,0 +1,357 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * DMABUF secure heap exporter + * + * Copyright 2021 NXP. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAX_SECURE_HEAP 2 +#define MAX_HEAP_NAME_LEN 32 + +struct secure_heap_buffer { + struct dma_heap *heap; + struct list_head attachments; + struct mutex lock; + unsigned long len; + struct sg_table sg_table; + int vmap_cnt; + void *vaddr; +}; + +struct secure_heap_attachment { + struct device *dev; + struct sg_table *table; + struct list_head list; +}; + +struct secure_heap_info { + struct gen_pool *pool; +}; + +struct rmem_secure { + phys_addr_t base; + phys_addr_t size; + + char name[MAX_HEAP_NAME_LEN]; +}; + +static struct rmem_secure secure_data[MAX_SECURE_HEAP] = {0}; +static unsigned int secure_data_count; + +static struct sg_table *dup_sg_table(struct sg_table *table) +{ + struct sg_table *new_table; + int ret, i; + struct scatterlist *sg, *new_sg; + + new_table = kzalloc(sizeof(*new_table), GFP_KERNEL); + if (!new_table) + return ERR_PTR(-ENOMEM); + + ret = sg_alloc_table(new_table, table->orig_nents, GFP_KERNEL); + if (ret) { + kfree(new_table); + return ERR_PTR(-ENOMEM); + } + + new_sg = new_table->sgl; + for_each_sgtable_sg(table, sg, i) { + sg_set_page(new_sg, sg_page(sg), sg->length, sg->offset); + new_sg->dma_address = sg->dma_address; +#ifdef CONFIG_NEED_SG_DMA_LENGTH + new_sg->dma_length = sg->dma_length; +#endif + new_sg = sg_next(new_sg); + } + + return new_table; +} + +static int secure_heap_attach(struct dma_buf *dmabuf, + struct dma_buf_attachment *attachment) +{ + struct secure_heap_buffer *buffer = dmabuf->priv; + struct secure_heap_attachment *a; + struct sg_table *table; + + a = kzalloc(sizeof(*a), GFP_KERNEL); + if (!a) + return -ENOMEM; + + table = dup_sg_table(&buffer->sg_table); + if (IS_ERR(table)) { + kfree(a); + return -ENOMEM; + } + + a->table = table; + a->dev = attachment->dev; + INIT_LIST_HEAD(&a->list); + attachment->priv = a; + + mutex_lock(&buffer->lock); + list_add(&a->list, &buffer->attachments); + mutex_unlock(&buffer->lock); + + return 0; +} + +static void secure_heap_detach(struct dma_buf *dmabuf, + struct dma_buf_attachment *attachment) +{ + struct secure_heap_buffer *buffer = dmabuf->priv; + struct secure_heap_attachment *a = attachment->priv; + + mutex_lock(&buffer->lock); + list_del(&a->list); + mutex_unlock(&buffer->lock); + + sg_free_table(a->table); + kfree(a->table); + kfree(a); +} + +static struct sg_table *secure_heap_map_dma_buf(struct dma_buf_attachment *attachment, + enum dma_data_direction direction) +{ + struct secure_heap_attachment *a = attachment->priv; + + return a->table; +} + +static void secure_heap_unmap_dma_buf(struct dma_buf_attachment *attachment, + struct sg_table *table, + enum dma_data_direction direction) +{ +} + +static void secure_heap_dma_buf_release(struct dma_buf *dmabuf) +{ + struct secure_heap_buffer *buffer = dmabuf->priv; + struct secure_heap_info *info; + struct sg_table *table; + struct scatterlist *sg; + int i; + + info = dma_heap_get_drvdata(buffer->heap); + + table = &buffer->sg_table; + for_each_sg(table->sgl, sg, table->nents, i) + gen_pool_free(info->pool, sg_dma_address(sg), sg_dma_len(sg)); + + sg_free_table(table); + kfree(buffer); +} + +static const struct dma_buf_ops secure_heap_buf_ops = { + .attach = secure_heap_attach, + .detach = secure_heap_detach, + .map_dma_buf = secure_heap_map_dma_buf, + .unmap_dma_buf = secure_heap_unmap_dma_buf, + .release = secure_heap_dma_buf_release, +}; + +static struct dma_buf *secure_heap_allocate(struct dma_heap *heap, + unsigned long len, + unsigned long fd_flags, + unsigned long heap_flags) +{ + struct secure_heap_buffer *buffer; + struct secure_heap_info *info = dma_heap_get_drvdata(heap); + DEFINE_DMA_BUF_EXPORT_INFO(exp_info); + unsigned long size = roundup(len, PAGE_SIZE); + struct dma_buf *dmabuf; + struct sg_table *table; + int ret = -ENOMEM; + unsigned long phy_addr; + + buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); + if (!buffer) + return ERR_PTR(-ENOMEM); + + INIT_LIST_HEAD(&buffer->attachments); + mutex_init(&buffer->lock); + buffer->heap = heap; + buffer->len = size; + + phy_addr = gen_pool_alloc(info->pool, size); + if (!phy_addr) + goto free_buffer; + + table = &buffer->sg_table; + if (sg_alloc_table(table, 1, GFP_KERNEL)) + goto free_pool; + + sg_set_page(table->sgl, phys_to_page(phy_addr), size, 0); + sg_dma_address(table->sgl) = phy_addr; + sg_dma_len(table->sgl) = size; + + /* create the dmabuf */ + exp_info.exp_name = dma_heap_get_name(heap); + exp_info.ops = &secure_heap_buf_ops; + exp_info.size = buffer->len; + exp_info.flags = fd_flags; + exp_info.priv = buffer; + dmabuf = dma_buf_export(&exp_info); + if (IS_ERR(dmabuf)) { + ret = PTR_ERR(dmabuf); + goto free_pages; + } + + return dmabuf; + +free_pages: + sg_free_table(table); + +free_pool: + gen_pool_free(info->pool, phy_addr, size); + +free_buffer: + mutex_destroy(&buffer->lock); + kfree(buffer); + + return ERR_PTR(ret); +} + +static const struct dma_heap_ops secure_heap_ops = { + .allocate = secure_heap_allocate, +}; + +static int secure_heap_add(struct rmem_secure *rmem) +{ + struct dma_heap *secure_heap; + struct dma_heap_export_info exp_info; + struct secure_heap_info *info = NULL; + struct gen_pool *pool = NULL; + int ret = -EINVAL; + + if (rmem->base == 0 || rmem->size == 0) { + pr_err("secure_data base or size is not correct\n"); + goto error; + } + + info = kzalloc(sizeof(*info), GFP_KERNEL); + if (!info) { + pr_err("dmabuf info allocation failed\n"); + ret = -ENOMEM; + goto error; + } + + pool = gen_pool_create(PAGE_SHIFT, -1); + if (!pool) { + pr_err("can't create gen pool\n"); + ret = -ENOMEM; + goto error; + } + + if (gen_pool_add(pool, rmem->base, rmem->size, -1) < 0) { + pr_err("failed to add memory into pool\n"); + ret = -ENOMEM; + goto error; + } + + info->pool = pool; + + exp_info.name = rmem->name; + exp_info.ops = &secure_heap_ops; + exp_info.priv = info; + + secure_heap = dma_heap_add(&exp_info); + if (IS_ERR(secure_heap)) { + pr_err("dmabuf secure heap allocation failed\n"); + ret = PTR_ERR(secure_heap); + goto error; + } + + return 0; + +error: + kfree(info); + if (pool) + gen_pool_destroy(pool); + + return ret; +} + +static int secure_heap_create(void) +{ + unsigned int i; + int ret; + + for (i = 0; i < secure_data_count; i++) { + ret = secure_heap_add(&secure_data[i]); + if (ret) + return ret; + } + return 0; +} + +static int rmem_secure_heap_device_init(struct reserved_mem *rmem, + struct device *dev) +{ + dev_set_drvdata(dev, rmem); + return 0; +} + +static void rmem_secure_heap_device_release(struct reserved_mem *rmem, + struct device *dev) +{ + dev_set_drvdata(dev, NULL); +} + +static const struct reserved_mem_ops rmem_dma_ops = { + .device_init = rmem_secure_heap_device_init, + .device_release = rmem_secure_heap_device_release, +}; + +static int __init rmem_secure_heap_setup(struct reserved_mem *rmem) +{ + if (secure_data_count < MAX_SECURE_HEAP) { + int name_len = 0; + const char *s = rmem->name; + + secure_data[secure_data_count].base = rmem->base; + secure_data[secure_data_count].size = rmem->size; + + while (name_len < MAX_HEAP_NAME_LEN) { + if ((*s == '@') || (*s == '\0')) + break; + name_len++; + s++; + } + if (name_len == MAX_HEAP_NAME_LEN) + name_len--; + + strncpy(secure_data[secure_data_count].name, rmem->name, name_len); + + rmem->ops = &rmem_dma_ops; + pr_info("Reserved memory: DMA buf secure pool %s at %pa, size %ld MiB\n", + secure_data[secure_data_count].name, + &rmem->base, (unsigned long)rmem->size / SZ_1M); + + secure_data_count++; + return 0; + } + WARN_ONCE(1, "Cannot handle more than %u secure heaps\n", MAX_SECURE_HEAP); + return -EINVAL; +} + +RESERVEDMEM_OF_DECLARE(secure_heap, "linaro,secure-heap", rmem_secure_heap_setup); + +module_init(secure_heap_create); +MODULE_LICENSE("GPL v2"); From patchwork Fri Aug 5 13:53:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olivier Masse X-Patchwork-Id: 595696 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E0A2C3F6B0 for ; Fri, 5 Aug 2022 13:54:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240757AbiHENx4 (ORCPT ); Fri, 5 Aug 2022 09:53:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240712AbiHENxu (ORCPT ); Fri, 5 Aug 2022 09:53:50 -0400 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150088.outbound.protection.outlook.com [40.107.15.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF09243E7B; Fri, 5 Aug 2022 06:53:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DTNShynI/q4YrjuBWxJfPKRRG2TWymDMcESiZCbLC8j1VBKit4OsoquLCaRp72u95oHhrI6kzDPPeB/AHYcvjXiH9Z6/5EILGvcooHAbUUAE+Fw4GyV+YHqvBclbzcgkL7LiIJpk3hCLY9hkh079KoweY7gtwgKQK+r0p0C8JEj3sqItT4w7pVHreo6GkqCqUhbMN8s3KEXd67X4008OMZ7Xwb/SUs02Mu4fg8pcPKZ+zk0HAKvZ4uX3fKke7j5/6ulX8A0FcwhvEp7bo+rzjeOSUPqSUkmLudh1INRj/Jigi8Y1VNs+emgQ3gAkS82grgeAARngv3b/OFBMwb6qZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=K4xR/woOXLlHvmkQLuIa5OL1e0+nSDFpkc1bQc3CCzg=; b=lzN01f9IixsL6GiHEqDcYhcET+rGVvSs8g0OGxDenSR3Csdu30UaD++wirqqjbz4pJiJEkfDoUhYo3Uz+WVlItE1RNWSawgnW+bVL9NIar0ADXuBuIJPrHbkMmMPIfS8Tw+Y4/eAMc7b+2We8frCMx+aTZ6gYNIm4WjlV7paz6/pe5k9qo6r4swq/pqeyvnkHwZmP1Z/7RhwnvtQMRy9AIXAkLhY0FGktEUDpa8CqITYmz17u3mWMvpIYaMesKyUBy17tQUEf6BMCalG7ST7lQFusRNKTivnVeiF9NI7DsjVJf7iOwrTcVXEhqzV/JcVBhNq9lq+vvtbHrKr3gb1nQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K4xR/woOXLlHvmkQLuIa5OL1e0+nSDFpkc1bQc3CCzg=; b=KoXFUXT+rPdCTULZ08GNrQw5hhrKJRK2ks4rRXlXcpOFdaPUSZbM/3efIivP4s04TIIBfYLJaUuEflY2YNwZRyOJEVvsjhIlyKOD18Pxqi34+66WMGO7C9+Bdz4zsXWykQS1XMRRK+xIVlNx1mLkKeUKZ9lAxRZsuJtWKWszjh4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6743.eurprd04.prod.outlook.com (2603:10a6:20b:f1::11) by AM6PR04MB5861.eurprd04.prod.outlook.com (2603:10a6:20b:a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Fri, 5 Aug 2022 13:53:41 +0000 Received: from AM6PR04MB6743.eurprd04.prod.outlook.com ([fe80::4cae:16ea:e349:6532]) by AM6PR04MB6743.eurprd04.prod.outlook.com ([fe80::4cae:16ea:e349:6532%3]) with mapi id 15.20.5504.014; Fri, 5 Aug 2022 13:53:40 +0000 From: Olivier Masse To: sumit.semwal@linaro.org, benjamin.gaignard@collabora.com, Brian.Starkey@arm.com, christian.koenig@amd.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org Cc: clement.faure@nxp.com, olivier.masse@nxp.com Subject: [PATCH 2/3] dt-bindings: reserved-memory: add linaro,secure-heap Date: Fri, 5 Aug 2022 15:53:29 +0200 Message-Id: <20220805135330.970-3-olivier.masse@nxp.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20220805135330.970-1-olivier.masse@nxp.com> References: <20220805135330.970-1-olivier.masse@nxp.com> X-ClientProxiedBy: AS4P190CA0017.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d0::7) To AM6PR04MB6743.eurprd04.prod.outlook.com (2603:10a6:20b:f1::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 53fddcfc-80a7-4a3e-0002-08da76e9e728 X-MS-TrafficTypeDiagnostic: AM6PR04MB5861:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WMDescU2qePPWhKeHeoUkFCB2F5ACn8/sCgacSOQwnqvbql9zZ/GJCmhWdZMTFkFLY7m++DnXoNXVEdyIlLVICmuFzwd3WS3STXLktfut2gr8NcU9/Oi8Sk74Bdbi+wm9zkdWIhB1cwBTAhpzvZ9EpIWlE2E+ODO/0oOVZMuzsgl/tCoBvJA748A3hUkq+y9xjNESVaUwniDjpsmKfJ1oK8idikp0HKVg3ZtfA7Z/6lR0cWLuzUPFFiJQsYpRr2I5yjaHWrz5oUJl1qm6n/Q5OhH2tkZtBbZGoyHSgKhauIPzPbuldQ6q52DcDf5RCqur66xvJ++Q69JW52PG/47g3J2QRpvIla4lq/yu3Usq5EwaRV1ib2IczVGjnot1id7Fk/1LtX/3ZJR00ytoxaakYt+aIBJ98hvw7541aR+XS66wAJo8Gum7fLapnGAhDLmZSOEGOc9/eOHKBred2eijzCe57KAXIRICiQBbj8o9JZB+2wT0fyEDxusaNf9/NKlRd97YJ9Ad5J9422yqZ8sxniMr+98inNd20gN6/dsAMXKbgSRPPhMIVa6ehZlhxzUVI45ZpY+fx1EpDTmZNUgvdCdM+B/ypZC0VYtD0Jpa09poHF5YtZ7p5bb6UEDdGlXpFlSssoI5LrgKI3bQIzSypUG/OIGNNJPK70SReYYc4ntEm1+XY/pOeui4cL86blOdt2O3/GSr5nm5hQqwq2I0YgYfrcYGcbGfKwC7qjJcWu/BL/zAJD8ZNetF27hMWBUfcSDNa+vTLqbP9n10xpMxVcJG9J51nkQF/pVwkQ1p0kHOUVKZuVvft8iJWvQGsWJGphhmS9Jqz//xfcL5coB9cRKbe8C6Ybg7JJdFlE6BbQ= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6743.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(346002)(366004)(39860400002)(136003)(376002)(86362001)(36756003)(38350700002)(38100700002)(6506007)(6666004)(6512007)(55236004)(83380400001)(2616005)(26005)(41300700001)(1076003)(186003)(478600001)(52116002)(66556008)(316002)(4326008)(966005)(66946007)(6486002)(8676002)(66476007)(5660300002)(44832011)(2906002)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0pD0GyWrB4Vvot3JdkUdeAuivRISxMSh4NrP7wTDkfeX5nZBwRaso9QSDcNYKTytN0WW2ALvN6FnE7BBCE4nyjEf9idXwVdLtvKTscdWL2t9hJBzWievRfzFNhvrk2A7kx+5jyZyQQkB9vpRgzYs0Ryt4pqLVZNgNwb4NIuTLwkHvtAt2e9lIebhyl+euZwEEis+e0LXnLytJz91YspB0HZnWEGutkbh9+t3ApZFvBrMO3CVjw5QjQg5QT5yBSNIbLrSFZ5GKGlVRdd8L1+24k+Q4wM/FlE+Ylyn7wd3i9wkd2CbEcQWag0DWtz7eMrNkkAT9t4mxRb2jFBKoAOhXRt1Kffx7YHqSpwpbQrp9ehBElTNGEwqm6flAD/5tPQpTzqbJUPSqSU+Yr2RSg+jGe9HKfgq6glW/WiPv0g0nTa9vi+73r3VaKmddGaXZotJlEXulHBlrNRvIvBKcY7PfVMLB2Xy8gh9Mq+sE0iV0AS+NjisrJjIzH4gGT746ti11tU2PRu/PY7Wv7BHGOhtp+YnOiS+u/60gueEVUhWrK0+QAp0bK+sC1zvQ7oPKoLGekHV7i1OMjw1/Fn/tMfQxrf1pPF53JvR9uRNmt8RlLwALX1cudYdLE8HB6/dV2diTBQn7C0KE/BsqOioE0SKoUVsNF27hHOXSeTDg0Q8KlHUvwEEmoeNxsod4eI2tW7DCCuyo1tr5rfK7c6VwewixPLo4nYyRXKd2ML4aBISkQh5lmEz4KTu2Pdzm1h9BngmIY6kQqQYrVdReSYmdJkmOJEdf9TWIZtHI815n+JIlm6wPO9W85NtNLdst6lLYnyEsX06+nVtDhOlc+e3uEStJrUHlLd6IM0cN6h7EQMQhtFCOnVChiMT1JfR5EcsW5FphBxxveAdjRnMV5NlanYsqASUNRV6IqJsf4Xt9PufoL0wtZjpX6v5sssYvex5YbYN2Gy0Zt23+Eb5yvUweWcPZLwIunoGUVF5BTrbQWsMDWRYV81jceiKbakyCMcmlzS/OWiRZUXtDU0DmkYyYtdzj6D9E9+gUF8LR1mQ8Kz0zHMF7CpJ9Zqm5S4VO4Y6VBRe3Gk23DpkIotwC239VpdIQXZOLHybkG4crakRgy3XUXpqfK25h0WXw/vpNi88qnR03E3b8gNZf6pYOB+POWFmv4e+ACp2EYnRJyM8z3XISMzqScs6HrSN1xgtn76ElvozxjXBEdAkfCvCStG4qmMSekTJCymhreESjfYglcOL/uctndccoc1eiK6Ri5oRhKJm/xgO0nORMbuNjecf3LtULwpsuAUsHLGxM8w3c8mFam3tEpDYEFgADPfEO7E2ZU33VZzotP4tlumN+Mzt3b5W9l3OyP7JrYV2QFAnoQfzVDkoP44wmOFmbCa4c8u9j3pYQZOpnOERrwszk4kvQec/XBmXB8F01pIchKqQ4lGB+EpvQRWK2GuezzfMFaSGW1w/tk9dVSrBo+DnLPC7wlW/2ow5JxUHRV3uPhXHVnKTlSl3kuuMl/pz+xNEs6fyTdSSsDpz6OmLGSfIOKxDgumg8dS1bFN/bnlOutbdxT5pv790FOykwQ8fiz3I3Wo9DL9/ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53fddcfc-80a7-4a3e-0002-08da76e9e728 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6743.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Aug 2022 13:53:40.6774 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: paGb1PKGj+Q5RW0zRh/BRhInTweKEVP+/Vdjth9GwoCBzBbW+0bNZkkJUNFZdGrKZ+Y+L1DYVH1xlbGBoaQ/wA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5861 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org DMABUF Reserved memory definition for OP-TEE SDP feaure. Signed-off-by: Olivier Masse --- .../reserved-memory/linaro,secure-heap.yaml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Documentation/devicetree/bindings/reserved-memory/linaro,secure-heap.yaml diff --git a/Documentation/devicetree/bindings/reserved-memory/linaro,secure-heap.yaml b/Documentation/devicetree/bindings/reserved-memory/linaro,secure-heap.yaml new file mode 100644 index 000000000000..80522a4e2989 --- /dev/null +++ b/Documentation/devicetree/bindings/reserved-memory/linaro,secure-heap.yaml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reserved-memory/linaro,secure-heap.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Linaro Secure DMABUF Heap + +maintainers: + - Olivier Masse + +description: + Linaro OP-TEE firmware needs a reserved memory for the + Secure Data Path feature (aka SDP). + The purpose is to provide a secure memory heap which allow + non-secure OS to allocate/free secure buffers. + The TEE is reponsible for protecting the SDP memory buffers. + TEE Trusted Application can access secure memory references + provided as parameters (DMABUF file descriptor). + +allOf: + - $ref: "reserved-memory.yaml" + +properties: + compatible: + const: linaro,secure-heap + + reg: + description: + Region of memory reserved for OP-TEE SDP feature + + no-map: + $ref: /schemas/types.yaml#/definitions/flag + description: + Avoid creating a virtual mapping of the region as part of the OS' + standard mapping of system memory. + +unevaluatedProperties: false + +required: + - compatible + - reg + - no-map + +examples: + - | + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + + sdp@3e800000 { + compatible = "linaro,secure-heap"; + no-map; + reg = <0 0x3E800000 0 0x00400000>; + }; + }; From patchwork Fri Aug 5 13:53:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olivier Masse X-Patchwork-Id: 596073 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63F09C00140 for ; Fri, 5 Aug 2022 13:54:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240732AbiHENyT (ORCPT ); Fri, 5 Aug 2022 09:54:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237634AbiHENx4 (ORCPT ); Fri, 5 Aug 2022 09:53:56 -0400 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150088.outbound.protection.outlook.com [40.107.15.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 647BB5143E; Fri, 5 Aug 2022 06:53:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JjyhZ0z/CWoKKqzcllnhFa2Sao9NHZkkQOF17hTMdDQD4BrQYuRdH2BUk9dwI8MPIE0OAksONvV95DT0n7mCIU0evRzrDbxcKbSfVPZaJKUINbRGnWUkOpvMAiNeam/vAA5mFkyJ8VzzRRFVnElB/WcuWzPrAsEPTqq0hLMQw/I1u3DaEATvE+2kJ/ZdmkRD85346BWjsC/IGIYutfvDSHqYmplj3U2GFD9jM28hNNXngVpKzvtPlXsOCcojcs3Y7x2eFNShUIY/+Bz9xifi+snzfAwP88307IJ22LPCUjiGfjdp+7YR4NsBxDsymDjvokQspAfVBirWdHHPq6Q18A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pIjN/bnKGnOwlZ4dWOa3LrUcdmoHgjANZK2yYtw9AGE=; b=ihxS0uxLHWaWKjzokWnTzocIps10KabczrQ5Hj37nspzDDMNLJpFauNWF5OJEijZK0UGDaAOK9q5v7JGDoXDSb25EAjH3nN66URnR3n9kQOaeURlSMrqNcW0p2LusWdLSPT89MvMrAFjsW8T4056+O/HlI3W1MqDgGXWxuB4DkQCq1v/ksWxRH2huNgiHEw7Morc5bV6EF7o2x9eDpVlWXnkXyaABSl/pd0j7vKIkhunz70b1AI/x7QrhjMP/CGGwobXCq+17z2MBUjIkg6xB3rYGbGGmTCPncHG/CHatrNTKXQwchP6tCppfMrSHgvDqCxvmU7AN7mvUrcp6l4mcg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pIjN/bnKGnOwlZ4dWOa3LrUcdmoHgjANZK2yYtw9AGE=; b=gIIUr2iqLNm8RmyRU8KZ/p4sl+xZYk/mMTxhCFTwem4aQ6bKSYM8BmEINK/ghM53/DcZUJbETpg2xnyGqsGK4Y0IJiUh9GTWMEQe/krAVJNX/th5lAjsvsjX+BTr/Ax94LD1+q4lds+bcmZARQiJkfi8mhR9b5o0z4Gpuuel4RA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB6743.eurprd04.prod.outlook.com (2603:10a6:20b:f1::11) by AM6PR04MB5861.eurprd04.prod.outlook.com (2603:10a6:20b:a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Fri, 5 Aug 2022 13:53:42 +0000 Received: from AM6PR04MB6743.eurprd04.prod.outlook.com ([fe80::4cae:16ea:e349:6532]) by AM6PR04MB6743.eurprd04.prod.outlook.com ([fe80::4cae:16ea:e349:6532%3]) with mapi id 15.20.5504.014; Fri, 5 Aug 2022 13:53:42 +0000 From: Olivier Masse To: sumit.semwal@linaro.org, benjamin.gaignard@collabora.com, Brian.Starkey@arm.com, christian.koenig@amd.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org Cc: clement.faure@nxp.com, olivier.masse@nxp.com Subject: [PATCH 3/3] plat-hikey: Add linaro,secure-heap compatible Date: Fri, 5 Aug 2022 15:53:30 +0200 Message-Id: <20220805135330.970-4-olivier.masse@nxp.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20220805135330.970-1-olivier.masse@nxp.com> References: <20220805135330.970-1-olivier.masse@nxp.com> X-ClientProxiedBy: AS4P190CA0017.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d0::7) To AM6PR04MB6743.eurprd04.prod.outlook.com (2603:10a6:20b:f1::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6fae4d13-4e27-4198-dc1d-08da76e9e82b X-MS-TrafficTypeDiagnostic: AM6PR04MB5861:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ii9nqunIJo5lH9AKYQOCwUEoB+vWW6ZdnjBYr1TVhLwaohoZITLuSgABEEWZwbxEm9LDpLhOPy8jT0T+Bh2MM4j6mcAllJSPedy9o5fWjGfjONOn408E476pmc1vONwYxHa9TW5NmuZz43R2fV68G6Z7RV3gGa7hWTOFyWItCaSUp4KoiHIt4qMI2jt/WALTH6ZmJiBu6IvLQXC0JQypbhgvJppIkYVFXDZWqRsz1APyrOJtfsWDEdB9834YErUc4P2mTMoJFhJf9WmKk4qxDVRDiRxkVjw9J4S+tGuTVidRTEM8d6m8EHRSCtjb4NzL0FmvmcET5iBAONhq2aEc1vFEF+xMzyVs9mph9M7V+Vwjp2dZaw/3cb91w1U0RMQjDX5n5kneII7LechE3c7aQcMHhUuWMLGU713hXRvGIJARyGaikktUjcdIvfoJ7kXE3cvm0rljjNlzMhgZD2fYHSI5BPL6QotmPWMEJ9F2NfUGduM7E74bB57AJ/VTjS1JtExVgLPojXsMkxvEnrj1BGhKRkwsGm1C7Ljew+aV8FWE/ORXUPnHSFRq5t5U4GE0RzGanOXxbBMBrgzpSx0c3Cqm89/KGH+FrzSxhY6eqX7ofqjh1nHJy5CO0S8+ShakQLByHr0MwQ2Hrn9/+9XqoqourT27hrtJqdOy60gRbDnl35fuQPZiBhZkWDMbz1dvChgVVY28pOGHdhmm+CMkZp4GPGhIuwJavxLzvG0zG8ssg1TBwL97yqHcx5Z3m7VBsurPw4PLXip2XnNbyTVryotKcbFis13nBvWxq9uPDw0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6743.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(346002)(366004)(39860400002)(136003)(376002)(86362001)(36756003)(38350700002)(38100700002)(6506007)(6666004)(6512007)(55236004)(2616005)(26005)(41300700001)(1076003)(186003)(478600001)(52116002)(66556008)(316002)(4326008)(66946007)(6486002)(8676002)(66476007)(5660300002)(44832011)(2906002)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +lcd11fLU1HYoRb5RPdYVJcO/DgIfiRl/wzruv3vng0O0Mcwa3fiTPoVCzqFtqa2dpHw6jpbBupgtVYNTNg/O6Cgmogd7IOI/iA5c/sf19ZqzqhYlWEbkonlXtXSqNHEee3jdXRTj9hOfRp/6z2Zf5cRDuTvx2j/vgEk1oTFDOUahPHMCWi19vMIy77lz2ly0XcN82LChFVG7JD0rl1Vflj5EuwjtSz9Bv45lZulzwj+rRdp8L7JPLJwp7WmZlRwX1+SkktFF72vO9zOJn441yG9p+Q8l/1lb6Ai9o9RUFWp1wiVH7O9AxF1kKVMpPqoXKMsnTPVIQjOPMevh0YZsNiZuzMGwwyS6/8b6uHFlmwI78Q7SfmqLCOSQdz2re4ZUIRZnUEpcVND/vzpdVI6tL7sOaQrytminKRwr9vMotQe95A0fZvtlNbfb8/njgCzVntgdqyQyBF+Aqtcj74hcbf42elBYT94CXMRL8ZQAmSApqeIRWjzRDYhtXyWLjPW8REGVS2Nu9uS+E7/s4xILPBME3sH2dY3ptP/gMyGFH8+GaQaLnNhwyVQc9LTTPZ+/4y65D5P/lqEVzfCUu9PLYLALOLQfX4STElMfTslPqUgfnmuSNaxR52tmppULCRuHQXLOfmmCXnieuFKmpsgDk0msHERv3dehF5POvTwpEeEMmzoBsnE8oNBEVJA2IW3oPY2D/tXHQI2SAG+5PtORg/pwaKp2HJ3G7YiAmS5xkuALAccn51kGYwn0MdlFo8ktG+eMTxvHtj82zLFEJSULt7okcwcb8Riq9Rvet8ZlpmWvVbUkUhKmTr4JiCbQyutI1YK1vpTq97CzFyj8VzhKUnHCYuweGHp/9lIRVC/upvpooQACYdMIDzi0JtRYIA4yv94GTt3iYzn1En+ELPo+jCR8WimHbzRx3MzpnkdK88xY/vaRGebjHXApqd0cP8a49FZckRJimKC+JaNwh7dwF4TGbDBNJmDuCLUTme/hPCILknsYrGI2CqC5CO1H9SD3e2+O/2wTZewWvPc7e/y6qT6uEVEgYFFaYc06NIUi7wSR/wCYhFii6AL37GyBXbFqfvLLgwF/dOxS5jQpEsuplJgOEExv9NCtH25GprU3DoAEoKVteqB3QFVEXPte0GFZjLAMs0yJ/EWRUQxlMnq2gRuzYIiTahIa6zb9Vl7v9cepKVjJ8QDhroBvvaxLvyJZ+Cdddyv0qUkejahLFrzOX+Zv++Jl7UnsVkG5DmidFfcd/AbGDeTbd5flQI33X8atjLi36FCO+6D/AAddBCcHAcrSUQCamTF/LwLBUmheXyqJsxV+So8576a6kV8AG5Ivhg/5LsfAwdrh6Z1V2BgO6hmmAMJnFyCZ+JaODpwyt0L9IJKW0X0hkoE6cwpq0LPBY7z0ZTY2HlZ5aE9I/y5Fs8mGOmnagCLgujWy5gSPxhFab2IvbQ6ZkhgS5DOHCA0LMPWAJzX4hGG1UJ2Hs2ZUWGskPKcung4ZkwLemuCaMX+7q+pM9Zo+wX6lSS2uNKxGp56vKnFnVdmcETTvrY6hNdUwp2RuRT49PwG+FkDTvhogk5W0xmgwLO8ni0S3plT X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6fae4d13-4e27-4198-dc1d-08da76e9e82b X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6743.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Aug 2022 13:53:42.2242 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EB4gAADMiOa9dYaOJAp3qxHD/ah3ziWBHa2k3kMwGbxBKlszNpCCUS4n4A0zokc5bM4Vx1ofGrpFBZuldKh+EQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5861 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add DMABUF_HEAPS_SECURE in defconfig Signed-off-by: Olivier Masse --- arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts | 11 +++++++++++ arch/arm64/configs/defconfig | 2 ++ 2 files changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts b/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts index 3df2afb2f637..e4af0d914279 100644 --- a/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts +++ b/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts @@ -258,6 +258,17 @@ optee { }; }; + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + + sdp@3e800000 { + compatible = "linaro,secure-heap"; + no-map; + reg = <0 0x3E800000 0 0x00400000>; + }; + }; + sound_card { compatible = "audio-graph-card"; dais = <&i2s0_port0>; diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index c09b07c22d57..ffdc45acef94 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -1465,6 +1465,8 @@ CONFIG_CRYPTO_DEV_HISI_SEC2=m CONFIG_CRYPTO_DEV_HISI_ZIP=m CONFIG_CRYPTO_DEV_HISI_HPRE=m CONFIG_CRYPTO_DEV_HISI_TRNG=m +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SECURE=y CONFIG_CMA_SIZE_MBYTES=32 CONFIG_PRINTK_TIME=y CONFIG_DEBUG_KERNEL=y