Received: by 10.223.164.221 with SMTP id h29csp1142783wrb; Fri, 13 Oct 2017 12:33:47 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBZxR+Aain9ren9wIczgHbk/H7wNsekNHw78LSnD2M00Gvfm0g/sg8aKiLotg1qMjFuO9Cc X-Received: by 10.159.216.131 with SMTP id s3mr2242270plp.432.1507923227069; Fri, 13 Oct 2017 12:33:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507923227; cv=none; d=google.com; s=arc-20160816; b=nK2LGJTEmhwxNg4VXtkB3yhr+67xE3fltgj2M7xJlXllRkWP4GBjGkFlKWE0t3e0D6 +aj2fV+gqaKTmEmRVgTF+FQRlwUfg0g+Ss0ZxYYzNQb7vfs97fxUtECmVFVY5ILLUE1z lYpSXnz4m79APRXMPMiVrMlSs+aT64djht9EecBiEKf6zx2yhhmmHUw8D/jXZetUsmTj U3fk4Jj37fZbtkAGN2R/dFkFzQA+lmGB4q+Wp97rGGah5CVyBg6ssU24OY3bpIlOudCl OdfutKC3VhMzdqaeopmhhucoGr7wZRe28cIJzqKd+dn3VNwT6R9nrntRUBBIMZ7ikPwU XiYA== 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=C/mhX5XAmBa14oNcKkFdl6qOhetE2BYhwQJy3m/j3NU=; b=Wb3S+ZF/S/wj/cfyh2iykHR5GKa8V9gq9OhehQo7t3qn3h5cQGSacEkP9gbr1YWarV e2xRemjBlqDWlK6UyHIoCVF5sc2Lo+iMmEThSe2V+ZIcU1IsfnDulxrKwNkAecv6lhS6 Mw++M8PxzXVTBCTd+fX4cPHgPSy98Pt2HmY4rVV7SBZ0X+MRXTn6qwDUpdnowXA8VtcC AqR+gYrL+M7E+TiVrIoJGvE+LfsZkScA9X8WqXbeg9Qff7gpZ9Ws72V3lgZ/W7yYaT84 wB6zFDJLg0Blhi/AaBv/55CL6djS2io5Xlx4sWHZJR8ukmz242SK6kmKZZpOYLAJ3JIp XSaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@EPAM.onmicrosoft.com header.s=selector1-epam-com header.b=AYi2AIJk; 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 98si1011163plt.495.2017.10.13.12.33.32; Fri, 13 Oct 2017 12:33:47 -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=AYi2AIJk; 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 S1752752AbdJMTc7 (ORCPT + 99 others); Fri, 13 Oct 2017 15:32:59 -0400 Received: from mail-eopbgr00050.outbound.protection.outlook.com ([40.107.0.50]:16519 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751057AbdJMTc5 (ORCPT ); Fri, 13 Oct 2017 15:32:57 -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=C/mhX5XAmBa14oNcKkFdl6qOhetE2BYhwQJy3m/j3NU=; b=AYi2AIJkB2zGW3AOWc3CZ3YEmCeTJUF4lGEbZAwuTBylJxMnTN2FBoadOwhtC2M/NHMudVuEwJVkHDBDV8JS+YbEK0d0Jf6v7oxZaqJIKsUg/kQ5MoWBg1JhK6DGqA62t+cYLDcmcsSgdA5YxJFJgyq2aBRd7LPzAaAqygU7/L0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@epam.com; Received: from EPUAKYIW2556.kyiv.epam.com (85.223.209.52) by VI1PR0301MB2142.eurprd03.prod.outlook.com (2603:10a6:800:26::15) 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:32:53 +0000 Received: by EPUAKYIW2556.kyiv.epam.com (sSMTP sendmail emulation); Fri, 13 Oct 2017 22:32:46 +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 00/14] tee: optee: add dynamic shared memory support Date: Fri, 13 Oct 2017 22:32:30 +0300 Message-Id: <1507923164-12796-1-git-send-email-volodymyr_babchuk@epam.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1506621851-6929-1-git-send-email-volodymyr_babchuk@epam.com> References: <1506621851-6929-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: DB6PR07CA0197.eurprd07.prod.outlook.com (2603:10a6:6:42::27) To VI1PR0301MB2142.eurprd03.prod.outlook.com (2603:10a6:800:26::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 372add4d-44a8-4688-4a60-08d512713319 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:VI1PR0301MB2142; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0301MB2142;3:SHQJBiQ87Sgl6Lu3gfY7JhDzvb3SLrAGyZUppa1li5aiMiFYTBu9kZjXDH0SNzY7lPz+0WXDosucOZT+zYQEz5cUyA1fPUGy+12/A1BsbEkV4hztpE2JMjLyYJ5BGga37PgmJZWFX3sHFsWheAEX3t7TOZFp1Y9Go0az5m8IHLdGhygpGDUMv6dAKT8pBBisLUvLsahZXOiNANqbenIhgTHXAGz0BUgYU31l4inNUA6Kkh1zM+IdkO4Tu5IRyO0E;25:5lF3B1yDUN7LitlZUhMz7f76VJa9pnR5O0Z0L3/g2aTelxvKPcGNitDsFLsBb2Nff8E313M1PVgA7atyIgT110E49E6Segrxu+p+nYUA+rysopdCCuUZm3YysL2R+r2iiExmz9lS0Yx1POQGP2OChdaJpwCaIOcK3iQAqI2sZEswRXtpIjTUIoDoLUXsX9FlTRLePdk3RAKN8T+8ddTmiGMPEjVzA38ogZpCMD0GznY+jCEazh8Xt/WlvfTNMqfL4dTJT68dDyYQpoE/xzDU9wzWRpCEIK+8uDuMnoiSvfzBF7hfD9iSd3m7AsY/KNW27jXFxdEMWefrHmwtZ3Vclg==;31:JJJ4hSKrCKU3gS9poD9+BNZ7LTxxGb6GnNH8KOZVikfe35bFEGNhBWRRQgRPF9gmd9aOMtgFkYu71S3mq8LrBjAr4H5OZYL07TGzkW0YNb65aaHuw9Y5HOEmS6EUTn1BRuuR2BSJpVoz/t82kTHuSelQr2V2u8/Rx9Q5HsdA+OH4d6i0Es26EsRt7eXqZjgoEHuZ1C7laEQahmv2e9+mcLJZin+1ck/oZmAgrCrkIxY= X-MS-TrafficTypeDiagnostic: VI1PR0301MB2142: X-Microsoft-Exchange-Diagnostics: 1;VI1PR0301MB2142;20:Udk9nR2G48J8DcfAWUsgjt2sI/yg0Ke/i/PXu2q34rsxxTfl9ts3On6whTtu2FqUbMFiOCv8f5e1u1PCozN1g9G6QAm6fpXsi9YEa6JBI2fY0NJzUAh7byWAFX2zVWUkxfZp8YAd8V3WmyrhZNQqxsGuR3gc1KANuMJhFWAL0HF87rXCgl/c58ZJMSGSll1t7NcIX7p0If09NEHuAVWLOBMuKbp7FbZOAXsL9hnGnAO61DeN2QxhYvDtlu/SloYzMzUXyosywOW5yhnRyVOJc3I4Byuc9/IO3oJBetaPhK4cKP+83kiEn7Emfu/wWvSWNnDx6rjWxclZOrkSqRb9xiYDGfPBP1siaNEDCGsbdWjgL9mhNK7IpABcXRY1TX0BKoe9l6ywJUyWwIWbqYPMeJIjzJoHPG7OIo8bXb/GdF+g0+DoSwWi3KUuRRe9it9FTp5qFa3WboDwSIG/uJFyuzX8vmXgbYlvB0JclhM+KpyUVymQ+k8B1gnPqWPXwFjU;4:UmBxgbFfgWTaYiKXTJGLTGCOVCldZGVDeaO+/THZgMh18WiH6F41WDW2sBYMa4/3qrCqzjtqbQ/7kHVpvoC7muIvbJaa6wzDnuc3iGYybbneFzyNxlR1hA726M1pUaQ7ZL7QUt05FC6Jl2iIh45bCw+R5J2QpLpGNi8F6XmfkZvtMb4wq2KtlrTf0cQHByZjyCue9axipHnaFQQM9Smjnae8XY4dhNzVnWN4GJX7WJx3a6TFnMux2DsuUefQ9EXiHUqrR6LmrEOFnZky1F/p+yz7Oueqmupv7xxB3YZeTXH7yBC7iuQiknzubFqB0N5pKmxxMzBJtaSRMKlbuGyT5A== X-Exchange-Antispam-Report-Test: UriScan:(180628864354917)(278428928389397); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123560025)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR0301MB2142;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR0301MB2142; X-Forefront-PRVS: 04599F3534 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(189002)(199003)(106356001)(50226002)(3846002)(7736002)(50986999)(966005)(101416001)(305945005)(33646002)(36756003)(6116002)(76176999)(80792005)(5660300001)(72206003)(478600001)(16586007)(97736004)(42186006)(316002)(39060400002)(107886003)(68736007)(6306002)(48376002)(4326008)(105586002)(50466002)(122856001)(189998001)(86362001)(2906002)(8676002)(81156014)(47776003)(81166006)(8936002)(5003940100001)(6916009)(2950100002)(6666003)(66066001)(53936002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0301MB2142;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;VI1PR0301MB2142;23:X4n2hGj6bkbUfAXzZFp0XDSpdEp8g3FmfgUciN6?= =?us-ascii?Q?Q3Q6xJUOxwz29HkzweB0izgENo1ONwBgI6NUy6Lfwf7iRxNyV/T/mURteaSR?= =?us-ascii?Q?bHQs1Vq1DKerH3LayaffmZPBHTVt54v+pjzia8JW76A1xaHrz0u5FXZDY8s2?= =?us-ascii?Q?kkrqY7mAmJQSgl2xmRKGk3LeFwmvR8XDNOVdxZjfyoW+AvBaYEcOXGFm2UYu?= =?us-ascii?Q?9H170h/idODRKwVo5HYaWA5WxC+YEl9xaFah7iZSbkIajZOBgSnj3Uc4nxYA?= =?us-ascii?Q?IZr1++RSBy5EqDadkbnWV60froYZn3gTAEmcyzUe2jjwDJHRK06+3ig1tH1F?= =?us-ascii?Q?tG9oT2mt3TNybx0x4/nMoVDK2iGAB+Uka/WfkZqXmL6BlGoCa2HidxawVxk0?= =?us-ascii?Q?TZ8WXQNAZh3f8oMIhD5/V5P2ANWgw7T2eGjeF4X3ZdqbhbNUYS1+rH9eh4fw?= =?us-ascii?Q?D/3WfVywylgUDtiIj4NsLDsvwBAFaHGoEHRGuzY/Lk6xJwf6+gLLhQY/cNcX?= =?us-ascii?Q?8bbF1bSWagzpuWnjz4KFjyYpQqvkgsapvAHzVKCXmfUu3ZUlhKaVlt6iYLsd?= =?us-ascii?Q?uEsfNxE4bD4n2NUFIy3x6psaEWRrXHwmf7EEWafa/qN22qZqirtUZIu9o1Hw?= =?us-ascii?Q?mBMjsfVJM914QoOCxjgAjNOTofqwmQHMqgx3ss+ytcOqoGDDETZUGxsp85vz?= =?us-ascii?Q?3Ksc/SaEC28mfdDfIBgl7QZQyofa3/j9eNwjo8Z22vptc9LjimwQpcOIVX+K?= =?us-ascii?Q?xrauS823J+k366kHoIdEb0T3fJCI50iCWb9xqzoBqCIbf5u0V5FIiGx57CQi?= =?us-ascii?Q?KgP9lQfhQspJ/WDeOis5JqH7YPd8ufNVS4vaqR+HNlvQskEBCm0rFW5TeNVw?= =?us-ascii?Q?kmetaBhOievTmxsSdpKKXAVGh0eierUNyLJ8Z79OIkdzr4YmAsVofsdQcEo1?= =?us-ascii?Q?66SH/YmHmAw8tW3M9vlh0g1/P1WLWDHrLnbc0WGptp9obGi5PT5JtAPGySTt?= =?us-ascii?Q?GmXyVdSapbFkeCB4p/6WMNMb5VT5KOo/UVC2Ph9wFY4QD4p55O2fM9xGwbTj?= =?us-ascii?Q?eYm1R2h+S8GMi4zwCgX7yH2A/a/RuPeMRjRta4YRdvNTbXU9az7oM+m2Kqfy?= =?us-ascii?Q?Ts1pDoI5mVANpryDycw0wDatR8BQZKDmp?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0301MB2142;6:oQ3/KijLAz2VQwKw/tYqK3jSDXPz38Dysc+3rKMl1+lcl2WY94H9iFf3PqdOFJgIeglptNEcBOiEmZtm+cIzfQ5bCea7gejYGHKItttHP8X6yJAnzworqKHu8RJqr5KGLWZz0dva4MMS7pwSOwF/cgedFZ7O+a4kIFlk20WFGmZvk+rhytgDDm31C5p8IEN2aQpnMyaj43VxTZIlbJrt7oCS0pPBWadVHwg4lWeZ8B1asizz0OK6ukZbzcBUShWLezaJxrSoiiXuS/8aUBgPdaRmy004FPLxOKi6ElpHkYgOlpIufFkpVnw8X12r7XyQ5UI0CdqKXfV0zjAxNoZ+OQ==;5:l3wEsKaSici4gKMb+6SpczyvykUWnpNcE8xxrz6t+g0FMCREg+pIZUvVtM0Lu0vC/VgMxCcV7tz2NzYjmmbIb6TUoDThAm9cVtDehY9roXIs8V1msVD2m541lVXIPZRNxZ6nAWbIWS5MR+S51h3MoA==;24:VsL8JwNuDCJl/UMi5he27mOCZeHDOlMG/Kny9b0r/Qak9YS/unQNNFvGDLmog/lRUyNvivFZH57zTLMmWiVVN667ZwMtdNkz0fSGhED1NRs=;7:bAvtuh69JRick7nFo77TF1hyEZwjweMMXXpFlIJNbGKZYSPsdNQmLcd680a3NrKlzyEuuZvRdaAfKYyI2RSrwn8vSzcvw0icrxhy92IKFTn/+xd6I1fKQ/E7mdnfvM3hviDPYKlz/Ga95YVQnuBW41XeI5xbeSQdWdyWqoDFibXe7QKH1uxnwvIJIX7Z+NQKa+knchcucbxzjdEqXgdJiqEWCTVlS3e/B0opzNQ0F0Y= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2017 19:32:53.2568 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0301MB2142 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Volodymyr Babchuk Changes from v1: * Added support for 16K and 64K pages. * Elaborated commit messages * More minor changes are described in corresponding patches. While this patches are necessary for use OP-TEE in virualized environment, they are not sufficient. Stuart Yoder was right, when proposed to make static SHM optional. But that would be a breaking change, because this will render unusable older client libraries and supplicants. Also, as Mark Rutland pointed, OP-TEE virtualization will need support from hypervisor side. Anyways, those patches allowed me to call OP-TEE from XEN's Dom0 without remapping static SHM region into Dom0 userspace. Also, this patches allow me to share quite big buffers (I tried to use three 2M buffers at a time). This is imposible with static SHM, because static SHM on most platforms is only 2M. Thanks to Yury Norov and Mark Rutland for reviewing this patch series. --- v1 cover letter: This patch series enables dynamic shared memory support in the TEE subsystem as a whole and in OP-TEE in particular. Global Platform TEE specification [1] allows client applications to register part of own memory as a shared buffer between application and TEE. This allows fast zero-copy communication between TEE and REE. But current implementation of TEE in Linux does not support this feature. Also, current implementation of OP-TEE transport uses fixed size pre-shared buffer for all communications with OP-TEE OS. This is okay in the most use cases. But this prevents use of OP-TEE in virtualized environments, because: a) We can't share the same buffer between different virtual machines b) Physically contiguous memory as seen by VM can be non-contiguous in reality (and as seen by OP-TEE OS) due to second stage of MMU translation. c) Size of this pre-shared buffer is limited. So, first part of this patch series adds generic register/unregister interface to tee subsystem. Next patches add necessary features into OP-TEE driver, so it can use not only static pre-shared buffer, but whole RAM to communicate with OP-TEE OS. [1] https://www.globalplatform.org/specificationsdevice.asp Jens Wiklander (2): tee: flexible shared memory pool creation tee: add register user memory Volodymyr Babchuk (12): tee: shm: add accessors for buffer size and page offset tee: shm: add page accessor functions tee: optee: Update protocol definitions tee: optee: add page list manipulation functions tee: optee: add shared buffer registration functions tee: optee: add registered shared parameters handling tee: optee: add registered buffers handling into RPC calls tee: optee: store OP-TEE capabilities in private data tee: optee: add optee-specific shared pool implementation tee: optee: enable dynamic SHM support tee: use reference counting for tee_context tee: shm: inline tee_shm_get_id() drivers/tee/optee/Makefile | 1 + drivers/tee/optee/call.c | 179 +++++++++++++++++++++++++++++- drivers/tee/optee/core.c | 152 +++++++++++++++++++------ drivers/tee/optee/optee_msg.h | 38 ++++++- drivers/tee/optee/optee_private.h | 27 ++++- drivers/tee/optee/optee_smc.h | 7 ++ drivers/tee/optee/rpc.c | 77 +++++++++++-- drivers/tee/optee/shm_pool.c | 75 +++++++++++++ drivers/tee/optee/shm_pool.h | 23 ++++ drivers/tee/tee_core.c | 81 ++++++++++++-- drivers/tee/tee_private.h | 60 +--------- drivers/tee/tee_shm.c | 227 +++++++++++++++++++++++++++++++------- drivers/tee/tee_shm_pool.c | 165 ++++++++++++++++----------- include/linux/tee_drv.h | 183 +++++++++++++++++++++++++++++- include/uapi/linux/tee.h | 30 +++++ 15 files changed, 1104 insertions(+), 221 deletions(-) create mode 100644 drivers/tee/optee/shm_pool.c create mode 100644 drivers/tee/optee/shm_pool.h -- 2.7.4 From 1580348591892252464@xxx Wed Oct 04 17:24:23 +0000 2017 X-GM-THRID: 1579807611018198018 X-Gmail-Labels: Inbox,Category Forums