Received: by 10.223.164.221 with SMTP id h29csp1145635wrb; Fri, 13 Oct 2017 12:37:17 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBwp2h7P8UdXG2yVnd1nIY42r5lNSNI8LRH12fsR9pcuJVwRike2eMTifY4eHyqkxtblJxS X-Received: by 10.159.198.131 with SMTP id g3mr2298173plo.337.1507923437310; Fri, 13 Oct 2017 12:37:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507923437; cv=none; d=google.com; s=arc-20160816; b=yNikPtZW5lmMOCWTBzT9mMmJ7kdtFL2Vs0P47PqMtzKweo4s2mr7L6WQQ+HtKwqVo4 S7eiByY0CkmNPQcN0hUCHJyG/ma1N7rSfAimWe3gBOpIuaAN90DTgbZx8So7YAj1oKW1 c/OIPCMBCmf4BvliLCWDg0aH7gWVqdjNvuSeqAUKAOAxGUKxqif0sqEmtaqAKLkIQ8/i NXBoLQok+Dp7hdU8EXjq9ws+M9SxFWlf+SFqwR4VIZGinC0T89SHiMLkoe7Akvr2ksms 7gy5wlvVZgS02q0P2mrz4I8b6pzd/flPven49yq3Xk+YPlZJ699+GeRdtcqXNuQaROJt /vUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:arc-authentication-results; bh=QPR87IbnUngJR+f4ooYMgdXOdSuPWqjy17KMp3D0lr4=; b=EAYJCzyc+wRuMVdYOAhxc0oO6w3qqLuxc+Qel6MzakkLamQDmj/GFUwUzeyVgLEgvD dybPl14ArIw802ScjYysvYqncpSPXXDhis7poEKtcFcE7qgDn5tse23WDh9k07fG3U4U jibwM/wTVvyv8FwMg/KvoR6SJ3KoHL9SoABdyf4pOYEQ/5s2OoElLI665IEaJvi1YHgp nLYK6/4u1onYAz7299MDwiOOPPAvykVPE/lZnviP71E6GR8ai/EGC4kvPSjFfDjmVgBK 6RarBtAzIWC4nv0mpV5jAsnL7HFKF5V/bmIb875VnVHME07R7hmuAfxw4vQjjFiFMLS2 IjEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@EPAM.onmicrosoft.com header.s=selector1-epam-com header.b=GaWnQKAT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r1si929450pgo.519.2017.10.13.12.37.03; Fri, 13 Oct 2017 12:37:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@EPAM.onmicrosoft.com header.s=selector1-epam-com header.b=GaWnQKAT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753690AbdJMTeg (ORCPT + 99 others); Fri, 13 Oct 2017 15:34:36 -0400 Received: from mail-he1eur01on0086.outbound.protection.outlook.com ([104.47.0.86]:33017 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753663AbdJMTec (ORCPT ); Fri, 13 Oct 2017 15:34:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=EPAM.onmicrosoft.com; s=selector1-epam-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=QPR87IbnUngJR+f4ooYMgdXOdSuPWqjy17KMp3D0lr4=; b=GaWnQKATGdAIxoN40Rc8zJyams+l9TUUK1/qgoMFQvKPHhkaN+pBwVwnW3rhDZ7TRGZWSXRmv7SMm06SqiBYaoTAPpP+sfkqpvNiszqDhuuppDcJMml/jvKbytyjvXhn+tDivzJKBqwT4z6igFHXs9Rh7pxzEgVDwM+/j3/VQ5M= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@epam.com; Received: from EPUAKYIW2556.kyiv.epam.com (85.223.209.52) by HE1PR0301MB2137.eurprd03.prod.outlook.com (2603:10a6:3:21::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Fri, 13 Oct 2017 19:34:27 +0000 Received: by EPUAKYIW2556.kyiv.epam.com (sSMTP sendmail emulation); Fri, 13 Oct 2017 22:34:21 +0300 From: Volodymyr Babchuk To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, tee-dev@lists.linaro.org, Jens Wiklander Cc: Volodymyr Babchuk , volodymyr_babchuk@epam.com Subject: [PATCH v1 11/14] tee: optee: add optee-specific shared pool implementation Date: Fri, 13 Oct 2017 22:32:41 +0300 Message-Id: <1507923164-12796-12-git-send-email-volodymyr_babchuk@epam.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507923164-12796-1-git-send-email-volodymyr_babchuk@epam.com> References: <1506621851-6929-1-git-send-email-volodymyr_babchuk@epam.com> <1507923164-12796-1-git-send-email-volodymyr_babchuk@epam.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [85.223.209.52] X-ClientProxiedBy: AM5PR0502CA0008.eurprd05.prod.outlook.com (2603:10a6:203:91::18) To HE1PR0301MB2137.eurprd03.prod.outlook.com (2603:10a6:3:21::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c27cfe51-4a26-4285-1edc-08d512716afc X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:HE1PR0301MB2137; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0301MB2137;3:u+6tF6VDgWzdkiebtxC5FP1tT8iwS2SZeH8ef7XXBf2/FB0LMMLr8hUdo4ig806TdIHA4qj3U5bEVOygnhXJXlv/iHVQ85AILZilknffSljN1RB0EQt4hkKpScBvMGpLKNwuDh5KYCJ2ThfQkHuGxI0xKxNUojIbKjYFZgqjlFuY+fVRRWVqBqnHRY6RedbZ96DpN5CJBFMuM5Ua0rORQuYJ3gn9GZeLnz0ygHA7//noD+iOZh0SgYa6Y/T/6My+;25:Igq2ISa1bngxr/XFZ2xOJoOlbXiDeKoOQGEDGlW0+od0ym1ZLddmQVPpaQQqMW6J+A17i0xrpZQqFGIJft9V7RNylHEzoswyGW+vflHzdPpNUfh+pBjh/CUZYE8Eugg/P7ZnFXuSJfW1IobSXK4MaUP8ol7XadoYje4OZIvNqGpyifHPcqkSPxp4AyQmFfuTBZwW3KRAHz1AGb0swdtRSUgY1Pvk1k87A1evVjUI+yyYkgq2IUsisu5ou5/rjqEh8gMItD07SK+wSLhyHwY6xSw212s35b5RdlfbGuUo3yxNrTlT+DpT1u9ZiR9R8Cim+UspLEpF71kCoP9LPwlmOg==;31:3JhKk16oErIfuO2TRc4uHcsQWA8Et4/4itZuR4WhfUHuYwjiWwHklRvPblTW35J2TrDMlpHWM/LA+Hu1g5ooSlA09CkIz0tlHejDKT+kQVGX6+WAVjSoFPJEPUI2x2M4Qq3OHN7hZZARTs9FeYHqNhF5y4FHpzNgpoiPqFcKL8ZAR/OgfiPm/nG/6kZ7atVjPjrjRgKitHoh4bb9phkZ/+noHVxvzH5PdEhIA/9Opgw= X-MS-TrafficTypeDiagnostic: HE1PR0301MB2137: X-Microsoft-Exchange-Diagnostics: 1;HE1PR0301MB2137;20:4DDXADK22ilkL7tGERSWhalLdpI1zbaYlrbuC8fMDrccBcr1nDUPAakS+aZyTBfRDg3M1zSdBGd7Fk/htOLd2aUoT8bUtqP8hl4KNSwOBmyS5kjNrxto9N/vYIy/joVDMt15ExAlFRqeGGBuHrC8yTmwbmD81d8CZzqSvlrTeOdHxkLIxkl0lbl96aWGwkMVSScTXmlvB0VnVQhomlxKgdw3QvpnnPWMQyP8MtbefilwzMBLDnAs1ZgaowlJEG5Xc6fe9EWGQU8XtkHPa4jfuhnk0zmLKEWKAjf/w/hCNdVCIa5+1t3flP2T1pj/W7JCIO1G2s6oYnkPzQoYYdwZ+uDoOBzcUjKC6kT7n4Zta2ahTqP9aDh1XQROtvxfex0vdcj5ztfvJZw9b/dDmrNnKc5MyrAxxA2epuDMb4scqRAgbm0esXes69undy0avWOJm4B0FvK5hlTq3zkM35pWuGxS4Dqj6al4icRlDrwo5O1bA9hyHrKBCeUVpijGGDjx;4:Y3Dbz9N6ZrdJRVviPhAGeLS1hgRE7SxisJ2FCR3v/gPk8PwdcQ9GrDxT8HsiPQn1xeu8t8GqkC4x2+VTQ8X37+Ewb962U7aLDNwmuVhKXMsi1CHHhyVYq37XbdKdjH7u/Hn2sAcGoou+KqJSHqkAvhqwJGOo31+OvmTJN1suapZtuHiGbsiwrJOqeDrm/8+zzimYho2S6TTA4URgCVr7wOmwQv+WNAYAmpfZ8PAvSwsYRBBTY9Bkrd2jmVkIDMvY X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR0301MB2137;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR0301MB2137; X-Forefront-PRVS: 04599F3534 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(189002)(199003)(478600001)(72206003)(36756003)(101416001)(5660300001)(50986999)(122856001)(76176999)(86362001)(66066001)(47776003)(50466002)(48376002)(4326008)(105586002)(106356001)(97736004)(80792005)(33646002)(107886003)(39060400002)(53936002)(5003940100001)(81156014)(81166006)(68736007)(50226002)(8676002)(6666003)(2906002)(3846002)(6116002)(8936002)(16586007)(7736002)(316002)(42186006)(2950100002)(6916009)(189998001)(305945005)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0301MB2137;H:EPUAKYIW2556.kyiv.epam.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: epam.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0301MB2137;23:SnO+8niUMzDpn0csMZ7L8rA7QIIxDrlxfuQ5ap2?= =?us-ascii?Q?5P/Z8Q+IIZ6siA32ww3bMe4gbSq0MK+9RSh5JhONCP+aCBZqRN4x8V5lWLEA?= =?us-ascii?Q?UsSYNAUoBkeko9FzPE/ftNvou5SV6yxiupnpGHb+QGLLwN01h+WwABRNOk+M?= =?us-ascii?Q?3JgOLH0eLVlpvj3YOef2Y6kcJCApVhGymXtjMYHyx2NmnUMrq/DdhKCTqJmx?= =?us-ascii?Q?PM6s4bDT7dwR0XPimZOcZeU+wFOkIh/me4FMFMzyHmOsi/lqxTGy1QgOndtR?= =?us-ascii?Q?DgtYQl3VA+3BcFr3UK0q7MQAieFkJI3I0pUiovnsZB+/8NDiw7wgpA/Rc32S?= =?us-ascii?Q?xbEBGYdySQD3Aml6iSgW2a+5PcagomBoIx7cN4sle/+81jUkbiYwH4rLCk9a?= =?us-ascii?Q?mf3y8s3boQEDoQ+CV3xQ0f8RebwuM3dEukL5hOMYe7eJGx2UXaUGnn3jUjxZ?= =?us-ascii?Q?+uc7a+KdzlQvkf6e3lEQtmW2j029M8TvjZbgffxKhwVUEp6ONOY3Rcx0kLaP?= =?us-ascii?Q?iRkck6BK9mXy9fP+6ipR3N1RNwd9i6EKWAd+gAmoXgVay7bZikSxPDU8dsRP?= =?us-ascii?Q?ZpQbBJ8z+HFDhKqfG7kZZMWDq4+tjT94cfhfLGHRItFq9FvyMwvggMDopMJ+?= =?us-ascii?Q?6gXLSOihuK2py12mEb3ChQgX9UYtsP2nbCxLoLkr2veaCfs7F9JomJN3MieV?= =?us-ascii?Q?p22SpWHHKZjYcef8MtswU4duxtK7WSK+mPCIubSmenuGYKqhWByM2ZpNjInX?= =?us-ascii?Q?4zdy2WVsv9RHftL0LpJ/J4LLa8mLK8S1ayCOSHJITk+vXQRnzkuOa07XCOen?= =?us-ascii?Q?JZsV5SCL4ZPf1v02gno1HaltRZa1q7Fpc+hxJVT2Hu16UwzvvEuAf4WIUTju?= =?us-ascii?Q?U3zaqDSp2CxsQgcdCiqp0EigeK/vYjZNAWBenV6eMVosPv3uCcRhPs81HwOS?= =?us-ascii?Q?7N9/yToT6+ry7voRCrX/Og0eTo5xJPoQJWAvMcvuALwDwGj8COqDnaz/13FH?= =?us-ascii?Q?mcBRU8GGPmJxGOdGcv/nnj2Xn3MPm4osRwP2LdiVtGSXl/8JG1SJgC1+vxJb?= =?us-ascii?Q?np+497owjYgSXZ5QOZki4DddCR9SkxH0a2fRnhHbZm6HCAWIuM4DWco6lrs3?= =?us-ascii?Q?F9OEdwDzhAJw=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0301MB2137;6:a0po1XmWAQUsnJfSygIIDX5pI5+uCO/Jhox/pH5A80sfBB8k74CSWD1EBiz/j+B+WNvvvqfFkzf0tyXDfxGNqhiRz9X8jEyGHY4PH1Q64UwvXpSYqKIpS6EsTsgBreXWIpxau9TDWjPGgf0pHCXdI+mIQe/pmFL4yTdJCk4f1zlfMQeJyZ6BW3HrR+enSs4rvglVXotDHYe4Ekr62ays9B9FtOv1Bxu65V6kOEXFTnhkCaKFhOqNL8RaLYgRHbl00BcwZpNZt60XfEucisgshMdC7H20s1Rt6QYPx6QdVp+xqo2hF+mk8bEhSzTnherv/ZyvjC0joYYueWGz3GlgsA==;5:8wDEV/QFzNblSsfn/QWhttrIGOt28FLvtM1FXXOMTRlX8NAnAmL+DMeGbXtBS0q5vYOsYkwiDHDMfP9yP38SogANWAhTdISMwPHjDxroskuM1umuOKg1NE3rfUBCoQuWgsRXxeppqROW6w5+vb5DkUc7/Ev/hfEa/I6l/5ys3XQ=;24:uDFfHnwrdA+wNfkuvDC1eYvq9JljzecaN03VCYQtOZ4wcpBwwe4tUt9YuyQCJDrQHasE2Od5OYczHqmUDiMfI5eojLS2NS0uozDfq2a7qXs=;7:YVnUwO09FIe6zsSUBdoWaL67AnXxGsNzFHT8RzqEouWGtyjuSp8IU1AivBO0vLP6L3VYsaoU0d94fHcrOg9PEngqXtVV+12LLOnlg134RctQfS7Hd+tdLvvzfJosxXXN3XLj4/X4NaUmHgW2FfOHVOK2xXXqLh82aT2QQalKJQ15PBEq1jCQNDUSewlJaL1m0YWzsvm5m8Iernr+5Amkfm7OE+WWKXi558hbDRbsiBw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2017 19:34:27.2836 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0301MB2137 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Volodymyr Babchuk This is simple pool that uses kernel page allocator. This pool can be used in case OP-TEE supports dynamic shared memory. Signed-off-by: Volodymyr Babchuk --- drivers/tee/optee/Makefile | 1 + drivers/tee/optee/shm_pool.c | 75 ++++++++++++++++++++++++++++++++++++++++++++ drivers/tee/optee/shm_pool.h | 23 ++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 drivers/tee/optee/shm_pool.c create mode 100644 drivers/tee/optee/shm_pool.h diff --git a/drivers/tee/optee/Makefile b/drivers/tee/optee/Makefile index 92fe578..220cf42 100644 --- a/drivers/tee/optee/Makefile +++ b/drivers/tee/optee/Makefile @@ -3,3 +3,4 @@ optee-objs += core.o optee-objs += call.o optee-objs += rpc.o optee-objs += supp.o +optee-objs += shm_pool.o diff --git a/drivers/tee/optee/shm_pool.c b/drivers/tee/optee/shm_pool.c new file mode 100644 index 0000000..4939781 --- /dev/null +++ b/drivers/tee/optee/shm_pool.c @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2015, Linaro Limited + * Copyright (c) 2017, EPAM Systems + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#include +#include +#include +#include +#include +#include "optee_private.h" +#include "optee_smc.h" +#include "shm_pool.h" + +static int pool_op_alloc(struct tee_shm_pool_mgr *poolm, + struct tee_shm *shm, size_t size) +{ + unsigned int order = get_order(size); + struct page *page; + + page = alloc_pages(GFP_KERNEL | __GFP_ZERO, order); + if (!page) + return -ENOMEM; + + shm->kaddr = page_address(page); + shm->paddr = page_to_phys(page); + shm->size = PAGE_SIZE << order; + + return 0; +} + +static void pool_op_free(struct tee_shm_pool_mgr *poolm, + struct tee_shm *shm) +{ + free_pages((unsigned long)shm->kaddr, get_order(shm->size)); + shm->kaddr = NULL; +} + +static void pool_op_destroy_poolmgr(struct tee_shm_pool_mgr *poolm) +{ + kfree(poolm); +} + +static const struct tee_shm_pool_mgr_ops pool_ops = { + .alloc = pool_op_alloc, + .free = pool_op_free, + .destroy_poolmgr = pool_op_destroy_poolmgr, +}; + +/** + * optee_shm_pool_alloc_pages() - create page-based allocator pool + * + * This pool is used when OP-TEE supports dymanic SHM. In this case + * command buffers and such are allocated from kernel's own memory. + */ +struct tee_shm_pool_mgr *optee_shm_pool_alloc_pages(void) +{ + struct tee_shm_pool_mgr *mgr = kzalloc(sizeof(*mgr), GFP_KERNEL); + + if (!mgr) + return ERR_PTR(-ENOMEM); + + mgr->ops = &pool_ops; + + return mgr; +} diff --git a/drivers/tee/optee/shm_pool.h b/drivers/tee/optee/shm_pool.h new file mode 100644 index 0000000..4e753c3 --- /dev/null +++ b/drivers/tee/optee/shm_pool.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2015, Linaro Limited + * Copyright (c) 2016, EPAM Systems + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef SHM_POOL_H +#define SHM_POOL_H + +#include + +struct tee_shm_pool_mgr *optee_shm_pool_alloc_pages(void); + +#endif -- 2.7.4 From 1579807692076557678@xxx Thu Sep 28 18:07:00 +0000 2017 X-GM-THRID: 1579807692076557678 X-Gmail-Labels: Inbox,Category Forums