Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935364AbcJ0Rpy (ORCPT ); Thu, 27 Oct 2016 13:45:54 -0400 Received: from mail-he1eur01on0118.outbound.protection.outlook.com ([104.47.0.118]:20310 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933709AbcJ0Rpv (ORCPT ); Thu, 27 Oct 2016 13:45:51 -0400 X-Greylist: delayed 166794 seconds by postgrey-1.27 at vger.kernel.org; Thu, 27 Oct 2016 13:45:50 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: Dmitry Safonov , Benjamin Herrenschmidt , Paul Mackerras , "Michael Ellerman" , Andy Lutomirski , "Oleg Nesterov" , , Subject: [PATCHv3 4/8] powerpc/vdso: introduce init_vdso{32,64}_pagelist Date: Thu, 27 Oct 2016 20:09:44 +0300 Message-ID: <20161027170948.8279-5-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20161027170948.8279-1-dsafonov@virtuozzo.com> References: <20161027170948.8279-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM5PR0601CA0041.eurprd06.prod.outlook.com (10.173.86.155) To DB6PR0801MB1735.eurprd08.prod.outlook.com (10.169.226.150) X-MS-Office365-Filtering-Correlation-Id: fc868677-dd86-4d57-5940-08d3fe8c57c6 X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;2:gmVM7LZPqdj2ULsY8QopGXgDgQUPj//Pkq+6EPBn8MttuoLzgbLpq/5eeV8X3OC9OOZqrGflWYw3mAFqEZAjB80kczFfQeBPc5k7tz5qPqBP/FNg1HlyCHSCpj9W0VvhvxsKZ7JjikBihGUCEJQYgDzVuzX4rv/X7ODP4guj7LrnBhCwuTJJqe6qpnd0NVCm6FJm/PQKw1STxkAQ8RSO1A==;3:/ITiegSZirqdJnsZvFt3hW4RyAyQCziBdv1N1UYdv88kck9KOb1hVEuFVXsCqyAhZqS1ugOxrPwSuJPJn5Rl1AYc4kv9rhVyXTryutjhFsA8TrL+QWm7MRM0YfGl5hyQrjc+NzTM+zAVbwENgqW2LA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1735; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;25:3tE/Pa6qszO8VRBBszB13lOu1zQ9lHTCQi7BoxbNBOy89SiH9dJkiED5f/OMJlf/l3QotxjehLFOpNy899LkUzyAgvYWZ+rKwiUtqRJhKCM/2AsJgMKX7ysnJbpik+wDdY+fr6lyF+uqkIDDOkNTjhxHcg1xOyjLw/jIeFwEb4Gpz0BWXLP+aZ0jaWB/nX5cLlrhuB8kTa/AycEvPrVy7dZe2Jbg9xYK8DHDNs5UzLnY8Qv7snCL52XdBDh6v42m/nDO5QFk72kbakCtES8Q+SfLvH8fDrJmscxBChQNMFBmXt939IRFQ8ezGZeaT23+V16QuL1WbVzk7ZEXIdZ5IlKbeuiwalPQYTKSw7hzc+px9EUu7he1AF1h/NlTlNWhdtjkeJWqGSVH422Tuj/gfmr+8gfBcLU8kiFBZZuuGGvYy57eTx1aNX3ZMiM5XRPVRW9cyfYuVZ/kR5FbX8aTOUHYsqJyz8bW9ootSRJ+bKP0cyYtY8s1VnfAkkyp+Ur2kZ9YIfsQcY0u8fSh3WVXLp3uPE1hcvnq+o/UDPOc56YziUZiI6vnnFZ3Re8Qih1Tf8jQyMW4Ram77JZw0kI8LXQ2nUAqjWxHHu+h47sBxG/xUIyzf/BwtHM/GvedMBFoVqqL7gGCljsJa5SMl+oJS/EMJYvUgQB/7s0b6kyVuCo0Agv91HFsR1V3h65YRGVvpDKXZNVzm5YkmHNDKkN7KQ== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;31:H7ambNL4Vd7LuHLIAx2CjIev+9FtHtoFE/V4aPlnFTBDFQP4CVuMiCTBVB+5ryk0G20xUXrNcxJkow0VgOiINdjZs4brBE7YhQrb93xbJ/uNSz+2l/SrQ8kRnC/WoQ8K0pY4tbrdyqwGWbu6EdvenSplu8bvdzDj00VborWpyqJpR0Ll3iO3bbfoXikpDuHeKNxpznW404AfEXsokTm4J7EouUm+jdqf68/mIetysLMnpuVpGp0Ughsv8sqNqOYx;4:CqW8V1Pu33K+xsfSfnkOA6vp+twJVBEYM0FxYHeOEsoB7CwEtsKFuW6gyPOqRI7sLxukKiND+jV0JL84TYVE0gXLfGs9ea9GOSoWJuv3yJgvTnCnXEHR0/DfeBDinYj16ieJA94YrSP3vavQRVOQuAgdFIH64oJFxLshZi6hfz23+6fltxkqKGF1e2VWWHDJq4i4G/cBLveNyeP80EB0O8jWIpizDXw7cEtRZ59NpRj0BHmhIfJnXZaoT2h9a7KQv/xAGDXjG4mOYqP20DZrMZ1va7PE+aY9qdVZBTAxxc8pH577WysXSTzcOHCXyfzLsT6b5YdUPfbbarPCkU6BcEpBTB5BuNd+KlJASPMjR6Q6R5ANz3RGRD8bDTB70ZnrM0ZfHLHIJuvM8HV3q7Z3gT7IKUH4CveRdh+P66G/2zrVQkRGLZfqIjRBDBfxIhELb0y5NeXJytxCU7ha95spXZIZbQIVIBg/X1nbenwejNQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(65623756079841); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6042046)(6043046);SRVR:DB6PR0801MB1735;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1735; X-Forefront-PRVS: 0108A997B2 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(7846002)(81156014)(97736004)(5003940100001)(305945005)(7736002)(6666003)(81166006)(66066001)(8676002)(92566002)(101416001)(110136003)(2950100002)(69596002)(68736007)(48376002)(5660300001)(77096005)(50466002)(6916009)(47776003)(50986999)(76176999)(586003)(189998001)(2906002)(3846002)(1076002)(6116002)(106356001)(33646002)(105586002)(36756003)(19580395003)(42186005)(229853001)(50226002)(53416004)(19580405001)(2351001)(86362001)(575784001)(4326007);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1735;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1735;23:lfkiWlC3PCt/vhXPQvk9vibCeH0Waj2lLGd73Wr?= =?us-ascii?Q?UUaRLjQwmuKsfGwGSizDkUC4lOQ3t3scMpZW/rSAIu3kxAauUe0Usv1/1v8/?= =?us-ascii?Q?AjWs+CHF3C0IKxmWmfyzHNZi2Z5S4daj8CrzONgsP2Xyh/2nQRRBQFGWn8d0?= =?us-ascii?Q?S9+K8PSSKezHVcw8BWfGHljXeYxznix8dxL1j85LD000Orjq4Xko1lK2YEBj?= =?us-ascii?Q?zQItrdGyiidgk2rjBf7PyFI8lgrvraejoZ9oWUzuxIA5rsOjIR9Od0xV6XlG?= =?us-ascii?Q?z1QDVXJb0ZCRD/qs3jvTReyI0PW3Zldo1X4uIf9Foh7fwHNbSnISWL5zaNAB?= =?us-ascii?Q?chdd/EUm3/W4f7veDSuzbcQxUAqDWgN+QGni16rEAc6+5VtIEwd1+ZaIouiA?= =?us-ascii?Q?SqWOtUgUFfUO1K5g0gQFwnnjizC3B06tBNz8V+YcBWMm4V9UqzY50odMFS/h?= =?us-ascii?Q?OgHaMqdlz5iFN9eNccMRV6mVeAYlY1hHDBQE4hQCrJiHWjP+YsMF5rUj6q+m?= =?us-ascii?Q?AQ0t9n9gIuSkzXrJuiX7K2oPNh5MEH8GbTgXvdYCke6dHxPDPmqwhghrXXQn?= =?us-ascii?Q?37JhJ7rCSI9HqwnLNlJjFGPjihRx8qLFxbHAniqAUottB6h5nhaVc8UpRdTk?= =?us-ascii?Q?IzFmqkw6B9uCPfzos2oWmgoH1j/6GCQLKzfS8ocoDeM+rljDitqTwatrlMUb?= =?us-ascii?Q?hSasTOlnjkOHGXrNdw/H4lQXE1KjAyaSY7oJ65oxukN6Oywt/3RIg7P7pIJy?= =?us-ascii?Q?AhL50UPorVSvZAF+2ARfQfdaCDcjYPqSklBiBEso8zOqkzifjDcEGNxVHz3g?= =?us-ascii?Q?uW4QG9bdKDHZvvl1rSdGS7wyMMu21lPTJbZy+VmZ47MT0r3dq/v/aBTgA7CZ?= =?us-ascii?Q?PWMu3EroIQJ8wvEFppdYF3iMZXH4Wzp+GY8JLKO30K6Y+tE9NdCP8m+/7Zom?= =?us-ascii?Q?BCWmGDtgvW2RxPJNQSKsjB4HbQxamdmZFyHnKeddLucdn0QSVR7VKQSnXCQC?= =?us-ascii?Q?TFaX5s/oTPIsdcoDoztgyzbSDqg6yGhriRmjSdxQ/YeDlDlJ9XQ/CXmd/CYn?= =?us-ascii?Q?Jqez+v1hqDPie4K1B0rmgICJb+KkPXOcz27OzRwKyGm6fp3Rp6XQAUJP5P/R?= =?us-ascii?Q?w67gtJdD1t6ehWryfetNo4CjeQhKUpjoKkayOyAo16fKqL16W98qZ8sD8YKd?= =?us-ascii?Q?r0BKynYfhH1LkMZLQ0adi4q3vFHmWI68sJkdOlxDbnZtpAghrd8AMUsKlaA?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;6:WxWDTBFOdKoMo7qMSImpXvop+PVr4QKIxknk7uAXGtMewj3tguD2K6uyXOsDnHZBiLkoWjrQb1pkeXft062wMAK9s+hUn5aHZfF6CaYwjgonW6KeznHro6i+osv4pa5a8nVy55yeVIGPo8sDNFfowOELkF0LaLutW21tgnSN7Zk9u79G5iVsH95dMVF1OD7higXBvsQ60YNA4nnzOVLAfI9iJvymXNnP+fx+Grx2Oao18+3Q7jeZiYtyU9GL3qrQ3mMa3f4FmGrAEV+1a4iIKUlAyp+VmTkvH0GFd7muniWBwCYa2Dz1nkZgtV33e+42DqgHBOFcpgMDGF4z5nb0VA==;5:XfDpKQqZUzAl3d/EfZ5AZlAnBgeH45AbIG8vIgpFunYTnwcbZ2Y/9PFSlApY6YZKmUc76EF3yhRg+lOXUudl6Y5Y4jMjB2PKTbh7FEXWr50fPJB9IkcQg3qqO5Rch+MxZ+2TU3iRQf7NlgB8Ophx8w==;24:Hlh3OuH0BOiMNFvWsj2a1L0K4cE4vwGihEKDXQzZO71/plbJn1TYudjKVR7z+APlkBbJILrFqCuYie9ANFGWEQpr9XDD7QfqDN07bs7frZE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;7:5Mp6r8vIjphmt/pPBh3QuX1ZBMVuTdwLA9cWTPsGmf0qjQRfUdfDls8q/htCcsyhZ/125vdRiLCPcvZ8Bp3LiD2824V+/mS6CQgbF4b3r9ZMlMpZ/bn6RBmJL4KQWK9ZecDXhz7JJi7saBWuL2JhezuxbpVDRe1PHiGyHDePYtqV4Pv68UPuReKUmAwnSgxtjVI3GgP+7+z8IgWmqSFrOA1ZNzRG8eIQKGFFMHb02A+thpNVEA094eYXvAuuj0znZBLIN8dZyFS1Zk1A8dSeZho0PWy5XAdYrbMESi9/LMYxPzRxIcUb1ZKMo45878Y4SZGQuMUWWZhhIjHWHqm9GZ/6fZV7X0Vp9odIb+Zq58Y=;20:o1OlWNOkvVdtt/8ws/Ml9/PDjCK+ZQfD+qj96js907R2NLcMYyP9Z0I41n7huUIkMyNc2J/JLIhqMCAeTj0kl5yjaQ/9SXsMNj7NXGRUwoG+PK5njoD+x+8eR+kdhBwYMmF/J+h68+758YJaFcgtG05d0IgGI1rT0ggtKyj0AwE= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2016 17:11:50.2207 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1735 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3557 Lines: 119 Impact: cleanup Move allocation/initialization of vDSO's pagelist for 32/64-bit vDSO into common vdso code, introducing a function for that. Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Michael Ellerman Cc: Andy Lutomirski Cc: Oleg Nesterov Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-mm@kvack.org Signed-off-by: Dmitry Safonov --- arch/powerpc/kernel/vdso.c | 27 ++------------------------- arch/powerpc/kernel/vdso_common.c | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 8010a0d82049..25d03d773c49 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c @@ -382,8 +382,6 @@ early_initcall(vdso_getcpu_init); static int __init vdso_init(void) { - int i; - #ifdef CONFIG_PPC64 /* * Fill up the "systemcfg" stuff for backward compatibility @@ -454,32 +452,11 @@ static int __init vdso_init(void) } #ifdef CONFIG_VDSO32 - /* Make sure pages are in the correct state */ - vdso32_pagelist = kzalloc(sizeof(struct page *) * (vdso32_pages + 2), - GFP_KERNEL); - BUG_ON(vdso32_pagelist == NULL); - for (i = 0; i < vdso32_pages; i++) { - struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE); - ClearPageReserved(pg); - get_page(pg); - vdso32_pagelist[i] = pg; - } - vdso32_pagelist[i++] = virt_to_page(vdso_data); - vdso32_pagelist[i] = NULL; + init_vdso32_pagelist(); #endif #ifdef CONFIG_PPC64 - vdso64_pagelist = kzalloc(sizeof(struct page *) * (vdso64_pages + 2), - GFP_KERNEL); - BUG_ON(vdso64_pagelist == NULL); - for (i = 0; i < vdso64_pages; i++) { - struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE); - ClearPageReserved(pg); - get_page(pg); - vdso64_pagelist[i] = pg; - } - vdso64_pagelist[i++] = virt_to_page(vdso_data); - vdso64_pagelist[i] = NULL; + init_vdso64_pagelist(); #endif /* CONFIG_PPC64 */ get_page(virt_to_page(vdso_data)); diff --git a/arch/powerpc/kernel/vdso_common.c b/arch/powerpc/kernel/vdso_common.c index ac25d66134fb..c97c30606b3f 100644 --- a/arch/powerpc/kernel/vdso_common.c +++ b/arch/powerpc/kernel/vdso_common.c @@ -14,6 +14,7 @@ #define VDSO_LBASE CONCAT3(VDSO, BITS, _LBASE) #define vdso_kbase CONCAT3(vdso, BITS, _kbase) #define vdso_pages CONCAT3(vdso, BITS, _pages) +#define vdso_pagelist CONCAT3(vdso, BITS, _pagelist) #undef pr_fmt #define pr_fmt(fmt) "vDSO" __stringify(BITS) ": " fmt @@ -202,6 +203,25 @@ static __init int vdso_setup(struct lib_elfinfo *v) return 0; } +#define init_vdso_pagelist CONCAT3(init_vdso, BITS, _pagelist) +static __init void init_vdso_pagelist(void) +{ + int i; + + /* Make sure pages are in the correct state */ + vdso_pagelist = kzalloc(sizeof(struct page *) * (vdso_pages + 2), + GFP_KERNEL); + BUG_ON(vdso_pagelist == NULL); + for (i = 0; i < vdso_pages; i++) { + struct page *pg = virt_to_page(vdso_kbase + i*PAGE_SIZE); + + ClearPageReserved(pg); + get_page(pg); + vdso_pagelist[i] = pg; + } + vdso_pagelist[i++] = virt_to_page(vdso_data); + vdso_pagelist[i] = NULL; +} #undef find_section #undef find_symbol @@ -211,10 +231,12 @@ static __init int vdso_setup(struct lib_elfinfo *v) #undef vdso_fixup_datapage #undef vdso_fixup_features #undef vdso_setup +#undef init_vdso_pagelist #undef VDSO_LBASE #undef vdso_kbase #undef vdso_pages +#undef vdso_pagelist #undef lib_elfinfo #undef BITS #undef _CONCAT3 -- 2.10.1