Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752113AbdI2PhI (ORCPT ); Fri, 29 Sep 2017 11:37:08 -0400 Received: from mail-db5eur01on0076.outbound.protection.outlook.com ([104.47.2.76]:43168 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751346AbdI2PhH (ORCPT ); Fri, 29 Sep 2017 11:37:07 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@epam.com; Subject: Re: [PATCH v1 07/14] tee: optee: add shared buffer registration functions To: Mark Rutland Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, tee-dev@lists.linaro.org, Jens Wiklander , Volodymyr Babchuk References: <1506621851-6929-1-git-send-email-volodymyr_babchuk@epam.com> <1506621851-6929-8-git-send-email-volodymyr_babchuk@epam.com> <20170929130643.GE5781@leverpostej> From: Volodymyr Babchuk Message-ID: Date: Fri, 29 Sep 2017 18:37:00 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170929130643.GE5781@leverpostej> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [85.223.209.54] X-ClientProxiedBy: VI1PR08CA0127.eurprd08.prod.outlook.com (2603:10a6:800:d4::29) To DB6PR0301MB2136.eurprd03.prod.outlook.com (2603:10a6:4:46::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bf645382-b7b1-4e2b-e3a2-08d5074fefbc X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:DB6PR0301MB2136; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0301MB2136;3:mvk+vWLbr10egQ+JxMGb3lk8nGIQoLkUwSAj1IrGdXM66OUbbP9jUTeBmlHRawJRNoG6UPu2cpIPbT9GMfV34rDwiNs8pJzVUWhs9B4lm7TgwbKzXtAxz1TAMMmu0TiNA87ixBqIIBK+vQfyK58Ag9rlVh0zkO/yJOnYi73LsrVrwpn45BweleMi2TEZPWsjhqOkKtMhwcjZqagD8fqnCBa+Wmia6x5bgm1nZ5A4JKxVgxsj7RlRLI3DS0cMBQNg;25:209G/SWWmNNL6l3IG2C23555kcdJ7yvXvLIdrqbUJ3MO9A85lTjVJ1gh0BDpCpnuDCHOQ1zanLo0vk0wrykOkRoKvmSDa6aeTZsL+Pkg7jYNFWd0WTyi3ZvzBV+Szncq8riZ3/ydAOfZfHm0cnTrB7Hm6rjjalVT9bpDnQH3/Np3mo/NHXybB+eS/MHaNilEvSFCFKa5vJOjLvC9JYbThY8n9eLFUHojSy8oZHmj30+up7PC19+3JZtOzSILbpZD0JIaXuo6XK/zgT2t77p8iSsT6Pl+axzoKjT9ENrdTAylhZ0uG1YjzxNk9dpUWuPXHPVmFAaSlmj5YHIWDHiQdA==;31:29JOYh4bw1kfetbYuPEDs2mY3Ywi30pOigf3KAVa94z2nW5rIUkqAD2u2Mj5enLFsZ80qhmWouxTIqZIhEO7Gpvg3ae/mdas6up4To6SPbDU14NTLBKVyFP2azUs0B5an767MYP+YMeYOEOQWWGxuNLmyqemXGZOjWFLJ98bc1VSJhh/EQUrtmuwFlLFBlJeqr5S4vM9FALckxrudcRxOET+uMsVrrzwAVH2E0FaCW4= X-MS-TrafficTypeDiagnostic: DB6PR0301MB2136: X-Microsoft-Exchange-Diagnostics: 1;DB6PR0301MB2136;20:m5dIVyaj7X1mn1bbzXuowwqvJJ1Y2Xg+SIuHfprzUQYF6+Hw3C7Hk38x/KDV2pp4wv/LxRpP8aTr7qdm4byKZ1EkEn2uHeLAdbcfeBAJE2apC+Sfr76lkYfMRagHQEXaIR7mh777QNi6Nxq1obdBoNd5RQrOtsDQzhd6P+6DN6GjF4yNMT2bNcG8ZflRLZTvxu+PzN2QPzHgHGTKV2rERJDFHWfgc9fuymfzfumvNsytYlnL75kvupwRSLCO0hvmaeJuzdHtF7hoNOKYJG2Wr+vZlFax/+stUo3HzixhUZ9AvU3cQhTkIlEAkPxy7r1lxoEH/GuydT9Eq7MW/WEBC7sAo7uRPH1sHTC0Z3Vyf8GSJd2f4uh4RTJeaPLD+ZWgNlFBUyLf19c1qs3DdFp2VLlLdJDf1MWkVVU5uoOkgqDsd6A/70eGbxWQVcEsgQKS722GmJkhHLPjWFoHsqNmyWE3zxI1mZQYV6IQoxxO1U90+2DK1+Sz6UPHFhMKUo25;4:UuUkSW1kpCF8o1OdjWc3CB4Ubx7vJn2MaYSYWcXGWXnMA7pWb7I+QQFYWGC15J2ThkQSMCUpsFyL+gmLjMh4SlVpNMg7Hr/cH+yyDZXgBOFeifx3HP7bCEOU7AYv7K1HHTGJ1ynnHichmUTzdTU7yyb8FhUO65CnP1HxENk7rLim9ZnOPz3/eYe7iE8T7Aq1I/JRq9QSueMVIk6KgZBRnKypTzLBJiEotih2cYbrOEZNumDvUlffdpf+janbARf5NeNihrfPhG6ofu2ahlAhsMrR/KykV9MWoQMXOQIfeGs= X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); 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)(10201501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR0301MB2136;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR0301MB2136; X-Forefront-PRVS: 0445A82F82 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(39860400002)(346002)(376002)(189002)(199003)(24454002)(81166006)(68736007)(86362001)(2906002)(25786009)(31696002)(106356001)(36756003)(6486002)(305945005)(101416001)(478600001)(65806001)(966005)(54356999)(105586002)(64126003)(229853002)(47776003)(50466002)(72206003)(50986999)(65956001)(66066001)(76176999)(77096006)(33646002)(23676002)(3846002)(6116002)(31686004)(16576012)(316002)(58126008)(189998001)(6666003)(80792005)(8936002)(5660300001)(53936002)(65826007)(8676002)(97736004)(81156014)(6306002)(6916009)(230700001)(53546010)(6246003)(39060400002)(4326008)(7736002)(54906003)(83506001)(2950100002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0301MB2136;H:[10.17.182.79];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjAzMDFNQjIxMzY7MjM6V2VWaWdFSlhkL0xCbEk4VkNBaVZDYzR4?= =?utf-8?B?S2p2YlBEcDJiZ0E0d3dwM1E5RDFQcnlLbWdxVEpBZEEyZkhqQUJnM1laTG82?= =?utf-8?B?c3lLNXR0TmV6QjFOOFY3bCtCUndJSnRjbmdnc2lNbGprMHRCeUl2UU9nUk9O?= =?utf-8?B?cndQMkZNTG9hdWNUVXk5YU9vUzRMVVNFYkJ3dSs1Q2JtLzNQVktjMWN2KzYv?= =?utf-8?B?ZEtQRFZBam5iNW1uQmhSMit4VkdQdVRoWUtGcjVGendkcktEYkJaSGJDcnAy?= =?utf-8?B?VGs0TGZQMWNTMlVpMlNkUUNzOEovSWlRckpHQldwTWFaUkg3cUxJbXBCUnVj?= =?utf-8?B?SnBMYUs0TklQMDhIUXdNWEFERFVkdEE3RDFWblNkZEFDT2RVQ1JaTTE0WUEr?= =?utf-8?B?NWE0YUdyYmpRYkVkejNKeElVNTNhVTV0ZGlISXNiM045amFxUUtGNFZtRE5M?= =?utf-8?B?TWJuS094R2xlamdoeCswckw0Wm9XVlNDdHJwUE5vV2NQVnMwenk0NzdaeHhv?= =?utf-8?B?a2w0MkpZZDVFZGRxWWxtOHcwNGxaWU0wTi9XWDNGcWg5RWd5SXg2cXZmNGtu?= =?utf-8?B?ZVIzam5UTm1ZNTIwbFVJeVAyc3BtTDRVbTBrNTRPQ3FObm51UVEzNHV4aGVB?= =?utf-8?B?TjU2YWtvcnU2QWhJNWNKZHBYMWlEMWhMUVlidGFXTndtTGxTbWxKc1d5eGxR?= =?utf-8?B?OHNYbXFRNVVMZ1JUOWVaY081U1pSbHZ5amY4ekVCMUdlbDZieGpTNzVqYlZM?= =?utf-8?B?ZjJBOEMrczhleHV4YWg1am5XSXJzWStleVNPWmdDMjY3ZXN5c1NaMG1FRERB?= =?utf-8?B?NzdWTU1nS3BjWlhFQjZxU0lkako5UXVHb3dKdm9YZnlLK0ZBNzI0V2thK2h6?= =?utf-8?B?RFQxZm9NeCt5RlBoWi9zTEFaRVhvdHZCQUhWa0M2K09BQmJxUzJxYUo4MTk3?= =?utf-8?B?b1RyazdQSFY3QW9ZWENwQ0cxSlFvdDluQWNHNUhvNVpxL0VtY21PQ3hRQkdr?= =?utf-8?B?VXFuSFYzNE9kL29ZbmQyY0VDSEtDMkVhOUNidGtXQysxUnJiV0V2dGdzdjYy?= =?utf-8?B?Qi9ORE5nb3dyQzhUVGZ3WmFieUdZQ0NwekFlelE5eFZJNktxNzlwL0JYdHV4?= =?utf-8?B?ZkkxM1hyMXU4M3RqZTNHZkFOKzFlaFBhMDJLRklOTkVaSjF0QVNRSTVsS2Q3?= =?utf-8?B?NkdsWGJYTG5NaXlzeWhxWmp3aVR4SGNvUU5zUVR0TjBCU1F6dEtWZWNJUG5K?= =?utf-8?B?V2pib2dqeGZGa0txWGxsMWJvdnRiZ2JiM0pCRnNETk53OHFXMkZBeGdCTGh6?= =?utf-8?B?R3Y2REFDL1Q5citLUW1DQnk0ZVFVN3Bvd0hpZkpsTjRCY0dlVWNHUlhUamoy?= =?utf-8?B?STZBdTliSWZNb0Y2R3I4Rmw5RXh1cWZrM3ltOGFOZ1U5QThlQUEzMzlDTWY2?= =?utf-8?B?VUk2cVJUenYycStQck5seFRYUStTQ0U4QzN6NWl0OTlCOW91d2pBTU9NcXdO?= =?utf-8?B?NitmTitqRFJJcWV5OHpxVVFoQy9xaUpvTGY3YmIxY2hqQ2pTeklHYW1uaXA5?= =?utf-8?B?WTg4VzFRNHh6QnVZS0xxeG43NExzSzc5S0RvYk9UT1kwNWNPMXlENFoyL3c1?= =?utf-8?B?aS8zSWUzVzA2QXErNTRBeXNxbWVGWXdkNlZDd1dZRjV0SnpTa3VDUGtSVGlE?= =?utf-8?B?anBKQnJTanJGdDBvYW1mMlNHSzBCd1lybStZVlE4MGd4aDN1elcxOU90RWhy?= =?utf-8?B?N2VTTEpsamsxa0VQSFFuYWZmc080Yy9rSHp0KzZaTUNTRERvbWlQdzh0a04w?= =?utf-8?B?TVMwVkQzR09WUUE2eGlUWXR3TEhLU0daUXFWOURrcVpFVS80TXYxL0EvK3Vl?= =?utf-8?B?RnJJeFIzZGtDWS9IQlAvUGxibm5ralVQbGZ4bTBoK3JTT1NFZE51bHk3b2t1?= =?utf-8?Q?MW9+3SwejkNDMhvzclDH+jN7V4FDG464=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0301MB2136;6:MjWjsROnTD/By+H7hM4098w/mAIXEeIIDvYFZHFI3ESwygApEbcZMhpsdBEDqTvngzrgxXvtuMdkQ/XiELA0xl+uIEVTzRt6ifVwksWA+TyJnGZ4g5ppfO4aU3l5CxFfEcnEA0bQtY6GIefIWdVKUIiY40mNL24uWbfN8EgSWmCPo3NMppwf19ccmGtuVJThwka9FnbSk4ttFCo/d50xMMVS54Mzlj73YCxp4bugPNHtlRCzu/CdHf/JRudplwvNaRWTBwW48J1cc/6VQLrQjUzKIeBnwpWVaxgJ2T9SbvBQWd26RBULCsRR3975YyNkTG65+jVK2VG2WnqFoBVZnA==;5:LdA/1eaFj2A0j6HCJgshqXghtUJlba0vwgPiOeRVl18KzonzfM+iCougFtafyZq3OkM/HmU0mEnzhqlnAUhJ+dRA7WJMv1Ux3YdHnr3ZlHJh5HUfQc41xehh4Gx0gzz08l2DTA3c1wkvueuZDNad/g==;24:yyKyj5vtNE+osfwf+StZIkRzbR8mS+tVHHd6/bjaXZdImcHKzgwvNua9jDK5eESb+3XF8xwUbj/BHK4c9JRdSAMcHpITpo+FEIfXG9qxYJY=;7:Xqif4eai0LsD3RNcRDMFUjrkpAS3xavT79uEYE0ookLIXk6CToqs9JelJSwz4ZdW4dTP4uSW3hdk+Tg0AC1lttcjQBzlSKq8Ms78bkyFeqFivAy8dOHm/gOpI2Qw5kOdnrWyDEdV2jbwI0IpV1zj0OjrsBcQShbSRwG9CLRgF8gdWsZXgP4trFOREWG65kYhcp0GFr4RNeoVpUk7kXL88z9qJNQnFyF8gOofwmGX1Xk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2017 15:37:04.2175 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0301MB2136 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2363 Lines: 59 On 29.09.17 16:06, Mark Rutland wrote: > On Thu, Sep 28, 2017 at 09:04:04PM +0300, Volodymyr Babchuk wrote: >> From: Volodymyr Babchuk >> >> This change adds ops for shm_(un)register functions in tee interface. >> Client application can use these functions to (un)register an own shared >> buffer in OP-TEE address space. This allows zero copy data sharing between >> Normal and Secure Worlds. >> >> Please note that while those functions were added to optee code, >> it does not report to userspace that those functions are available. >> OP-TEE code does not set TEE_GEN_CAP_REG_MEM flag. This flag will be >> enabled only after all other features of dynamic shared memory will be >> implemented in subsequent patches. > > While it's not adveritsed to the user, AFAICT the user could still > invoke these via ioctls, right? > Is there a problem if the user were to do so, or is it simply not useful > without the other features? Yes, user can invoke this via ioctl. And this buffer will be registeredin OP-TEE. But user will not be able to use this registered buffer, because optee driver does not know how to handle references to registered buffers. This is a complex feature and I tried to split it into different commits to ease up review. Probably, I can remove + .shm_register = optee_shm_register, + .shm_unregister = optee_shm_unregister, from this patch, so user will be not able to call this functions at all. How do you thing? Should I do this? > >> +int optee_shm_register(struct tee_context *ctx, struct tee_shm *shm, >> + struct page **pages, size_t num_pages) >> +{ > >> + pages_array = optee_allocate_pages_array(num_pages); >> + if (!pages_array) >> + return -ENOMEM; > >> + msg_arg->params->u.tmem.buf_ptr = virt_to_phys(pages_array) | >> + tee_shm_get_page_offset(shm); > > This doesn't look right. Why is the shm page offset being orred-in to > the pages_array physical address? They're completely separate objects. They present the same registered shared buffer. You have a list of pages and offset from the first page. Strictly speaking this is not buf_ptr anymore, but it is named so... This is a part of OP-TEE ABI. We considered different approaches at [1]. This fits into general ABI design. [1] https://github.com/OP-TEE/optee_os/pull/1232#issuecomment-301851514