Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753970AbcD2N4N (ORCPT ); Fri, 29 Apr 2016 09:56:13 -0400 Received: from mail-am1on0122.outbound.protection.outlook.com ([157.56.112.122]:30672 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752670AbcD2N4J (ORCPT ); Fri, 29 Apr 2016 09:56:09 -0400 Authentication-Results: virtuozzo.com; dkim=none (message not signed) header.d=none;virtuozzo.com; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: VDSO unmap and remap support for additional architectures To: Christopher Covington , Andy Lutomirski , Catalin Marinas , , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Arnd Bergmann , , , , , References: <20151202121918.GA4523@arm.com> <1461856737-17071-1-git-send-email-cov@codeaurora.org> <2ce7203f-305c-6edf-0ef9-448c141cb103@kernel.org> <57236003.5060804@codeaurora.org> From: Dmitry Safonov Message-ID: <572367B7.6030105@virtuozzo.com> Date: Fri, 29 Apr 2016 16:55:03 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: <57236003.5060804@codeaurora.org> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR06CA0046.eurprd06.prod.outlook.com (10.164.28.142) To AM5PR0801MB1297.eurprd08.prod.outlook.com (10.167.216.148) X-MS-Office365-Filtering-Correlation-Id: 125f01e8-8db7-4d2c-9cfb-08d3703601dc X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1297;2:Gv4PMTMPSJUccP5l96s6xZwYT34aPJB3/Q8Ajvw2krhUTDBnDwuWPBV0x9bWsCdy/TpDfrAmbiq+VhzQLPJLThETKje9N27QwCRqIgocs4FABHmEZPL5fRlefxzv4jS9wKQpCh5N8A+YjrR6Rjztbce4iqoxjJNfySUQL8USnSrFSxmoM5X1UQ58tpJ31tcj;3:STewx0O3nY9/4hFjezO2VYWchIg2y2E9rxNE1WkVaGlskorFlV41Ko15j7XpQY8CaiArKOaa8xbeegBIu5oV8AvyBWFwa4IPLh4YhVWdR5+xqw0vonI7tRzOevax3ByP X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1297; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1297;25:zliWsiaqXswBiv7YVjqH0jLiYUXt9KN6b4Js3XfUS1vsUclW6XXisjd9E0S2n0dt74Qa70XkeRDf6Q7gj4vlIDf9kdUkSLnlIVRX9aHtRVeicXB8Ye5bd70pvNN8RhCr7RrSq/mEc1Qf/F+zjwmxBZ3MA74lX2wPK8EMZIPOEnX/UCpSATRbxTNcZkO4mhz2xx9FYXSlcbKoj85tRSwgh+Jio26WQNct/JpAOD0MIdVjni84KRjaP0hD03ooO/s4hjAHbE54FQhWueBgpQXpf0r8BUGko47IBXUQhzyNgWsiYNisVODGXg3UTfYMcPazgvMpU4CSeRGqQ/2v7Su+yQ0Rpy0xOMLINmJ4ZSgYbV+4yua88hzOzd/n+vmXyWNsmHWBAUKkpWHy2NsrGVhTxb3iw4JFVN/7e6ummV4HMBguD/xswEBO2cNiltpaj/qwvL3caitOGYASKTHqPcQbQjqzaXJZ6XoLyV1yaJYSRHXQ6TFAL/mwZMekAevqHbEQgQL3pzbbrx2GRcb38sMkQK1guXjzk2/uxwyyKe0tExJZEMyWXLTuo7V6zkK60ie+qcwDLd0m7kmpAwEnGBPrSYIJJ7uMbcOdKTPoW1rub3i3bRRdOYXkvN95eXAlcMHbMUPTUg5P6G9WqgGCBcb34w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521072)(6040130)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041072)(6043046);SRVR:AM5PR0801MB1297;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1297; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1297;4:r0QLgmzRP52JHm6vcd1BFT58bywYYAxxc2EN90ST1ff+HlPIgsDLTCsKJG7hdkN1Rgm0sSntEAVvpuch56kRbq1Rl91uW9CEypFWKyjSrFs5FAW0PNR1SrwhyQVnHsMwncEr9Rc421JPLixvmTtQTanFNN1Q+11y4pr/ZJszhPpiMRRY01Nl3W1rF33JQ7ORrDIfWtt3NPDI/gSupbGaz3jGWBn1s/dpEkarXEnErUAFhv1ltUh6JMRcPiq3P5zCoBu+Red5gwFJQM7LAJHukt7eNHvUq+07FWqM1BaHrKFZp0kYhSjrD9jW5OXkeui3ofX7yAx0NIMm6nJgT0wg/I/zwKCglUNVjptP3jowmRJSlAtDl4ZYcWvCWbw007SmipwFLbAw9/2knGm1IqDjOuq75mZuIlbryTVNvv0zNaSgBFhyNPaySOJP0wSyiPP94bhDZ0SATygs0XwuS9WXvw== X-Forefront-PRVS: 0927AA37C7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(24454002)(377454003)(59896002)(5001770100001)(80316001)(50466002)(64126003)(36756003)(83506001)(5008740100001)(3846002)(586003)(2950100001)(77096005)(4001350100001)(93886004)(107886002)(5004730100002)(189998001)(2906002)(92566002)(1096002)(65956001)(47776003)(33656002)(65806001)(42186005)(230700001)(2201001)(86362001)(6116002)(81166005)(23746002)(50986999)(54356999)(99136001)(66066001)(87266999)(76176999)(65816999)(921003)(2101003)(83996005)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1297;H:[10.30.26.154];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;AM5PR0801MB1297;23:2djhcmZZOAF7N2uz56/ORGiGX0QTsDySGj4?= =?Windows-1252?Q?Xa/ju8W6VSbS7yjgG0jJu36M24az/ZuNa1sA5jN4fM0J1vsWz4kKXV3r?= =?Windows-1252?Q?4bGfU4o1MjOoe5lXh83YQQJ4bl9iOTaI+3ZTtVfE+hvDbZIF601CTgmh?= =?Windows-1252?Q?3/Em1BUusc7MJxGiS/2mStS4weSDkitbyYY9ptUvF+uSN/uGbFlmmyZn?= =?Windows-1252?Q?9kGIt/Bh9HXALrSd5rp4zxPZwPnzF5K34Cy/n2JYUJag6dhZalsPJL8a?= =?Windows-1252?Q?xOGqTULsa+yr9xY0IFjnck8re1+DnPmm0JOAPDtgIvexVtP1L59zvRYC?= =?Windows-1252?Q?Q3J9/+MMh2POerhdHgp4xT55bn6GHKN7GaQEFDkTp85NJeKVFFdLV72B?= =?Windows-1252?Q?KTy/pLjqocGUvIqQ7EDxYhyqDWoQyAXEddVPSkv9xmlIzLggDZs7uMKt?= =?Windows-1252?Q?Xnx5/jBlzOsi156bYpNvqKoiAE2MHTbv0/SPPrEDGTV03609CtH2/Hls?= =?Windows-1252?Q?9LuZy5GzKh9uzUIoUBtHjO8Te8F5s1c2ncjxAch5c6xvqx2PNni5UBel?= =?Windows-1252?Q?MdQod6T/FJ3rf1dQ9PuUF+r3GC/m+FIJ71ArYHEVHVgPW5XwlOHVNOZa?= =?Windows-1252?Q?4GirTrWxnc5PyPEsnDSFldyhsW0IjRyl9HpxkZmSVi3YQQ5vAbol/fuB?= =?Windows-1252?Q?N7Zjm+iNJqtIkaThFAyx+/2/VR2ZHOA15QEQ7E9FIToWzSuFgvQQF+l+?= =?Windows-1252?Q?1Dh23ZSb2kHV//AEs0E15+oRoTAAVKxWJkwTy4aZ8sGy61JO/thBxesU?= =?Windows-1252?Q?LPjseErbcUoIcOBEqrjerGsmXKCzgHuLO2ErRXKakwvaq83PWpRe+o5v?= =?Windows-1252?Q?M0vmTRsBiLHEOIPpWI6fsToDBRgzTCHsJAvNDfxtZo/I1gcQUqycVPal?= =?Windows-1252?Q?wmVNDVDjv8RcHNvSFEavRpZkCEdQ4/14xx5BZvKADdT6UW/g1FBut+Ht?= =?Windows-1252?Q?QNphjNCcyE9H0O1w3tV1tDEaSJAmkt4w3jIjpqQAANAWdSq1EPAQ2NbY?= =?Windows-1252?Q?0YsQLjt8Kn7mM1lAPhjKZqfZqdnaklIHXcRS9b4/u7DxGX6f8uwBTm4/?= =?Windows-1252?Q?P+efkZ45cJOIKG+XV+xMvS39asT1RlB9eCXvBEfxmzLC+GAxcPyxyKAQ?= =?Windows-1252?Q?4ZDH+l3AGtzY5j4rJ5w91cOwpyPpJ3vIqCud2pQbUtqVc3EbrYWteeXy?= =?Windows-1252?Q?txePhr3G/mhmZIG4onQCTptSF/cyV0Pkp96erTBo0gSr/6PdDPAWGtNM?= =?Windows-1252?Q?rqXQe?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1297;5:zwRUUTnWmPCYpm3FEk9mLm83ZG7vs8J6Mirv9UTJLzSWYan/+lRcO4GIzNUJr7KAWVXB+z7nst6JyPM957tKWa+J0dcG1ZShY/9EMxOj4xV45Ss889SEIBWZthdwdfuwz44KZCDEiSMhRJtdWgxmMQ==;24:J7GI1PbS4u3RfoKjK6w4ug9j7jwhvsWYF+x7DT73IyphoMRYkHsSaAYJfC9etf+F20tfeDmnxFF/b2D/9Gngp+a5eC9TEkml4kExdoQjc7M=;7:zKIxHTbgs6oUPfG050Vuj2CFba3Xr5+ssPMWaLB8yO2AEjfK3SETtxPqdn3nCkdbzjAkLQBcVztwwYcVC0aBL7bHQdxQZWLv7sBVK0C81QCteCXyAWKzvYnMU/NNyPBs7EuqSpa5qrc+AW6A5qNLSbChVEWZ5hO2bvpVJD61RvA4tXsZrMcHvN5nYDdiICcb;20:NGJIHqAmqNHTUN0e9BXjPPpJ94A4F5Ina/DLPMW9AGg/Wlx/tSwGtPGoBX+tTXzV4dkmvWUcq7NXLvWsDm+FSUNwnpvfQ1vkr1RJ/CfC6H5owyCEZcVEPuGakMMqV4Qsq5mTKjjfiws68q6DfnmSO1GxqAx0NZV+NWPWCWrJfY8= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2016 13:56:02.8182 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1297 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2165 Lines: 53 On 04/29/2016 04:22 PM, Christopher Covington wrote: > On 04/28/2016 02:53 PM, Andy Lutomirski wrote: >> Also, at some point, possibly quite soon, x86 will want a way for >> user code to ask the kernel to map a specific vdso variant at a specific >> address. Could we perhaps add a new pair of syscalls: >> >> struct vdso_info { >> unsigned long space_needed_before; >> unsigned long space_needed_after; >> unsigned long alignment; >> }; >> >> long vdso_get_info(unsigned int vdso_type, struct vdso_info *info); >> >> long vdso_remap(unsigned int vdso_type, unsigned long addr, unsigned int flags); >> >> #define VDSO_X86_I386 0 >> #define VDSO_X86_64 1 >> #define VDSO_X86_X32 2 >> // etc. >> >> vdso_remap will map the vdso of the chosen type such at >> AT_SYSINFO_EHDR lines up with addr. It will use up to >> space_needed_before bytes before that address and space_needed_after >> after than address. It will also unmap the old vdso (or maybe only do >> that if some flag is set). >> >> On x86, mremap is *not* sufficient for everything that's needed, >> because some programs will need to change the vdso type. > I don't I understand. Why can't people just exec() the ELF type that > corresponds to the VDSO they want? I may say about my needs in it: to not lose all the existing information in application. Imagine you're restoring a container with 64-bit and 32-bit applications (in compatible mode). So you need somehow switch vdso type in restorer for a 32-bit application. Yes, you may exec() and then - all already restored application properties will got lost. You will need to transpher information about mappings, make protocol between restorer binary and main criu application, finally you'll end up with some really much more difficult architecture than it is now. And it'll be slower. Also it's pretty logical: if one can switch between modes, why can't he change vdso mapping to mode he got to? (note: if the work about removing thread compatible flags will be done (on x86), there will not even be such a thing, as application mode - just difference on which syscalls it uses: compatible or native). Thanks, Dmitry Safonov