Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759454AbcJZB3Y (ORCPT ); Tue, 25 Oct 2016 21:29:24 -0400 Received: from mail-he1eur01on0122.outbound.protection.outlook.com ([104.47.0.122]:40175 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754410AbcJZB3X (ORCPT ); Tue, 25 Oct 2016 21:29:23 -0400 X-Greylist: delayed 3625 seconds by postgrey-1.27 at vger.kernel.org; Tue, 25 Oct 2016 21:29:22 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, Dmitry Safonov , "Benjamin Herrenschmidt" , Paul Mackerras , Michael Ellerman , Andy Lutomirski , Oleg Nesterov , , Subject: [PATCH 4/7] powerpc/vdso: introduce init_vdso{32,64}_pagelist Date: Tue, 25 Oct 2016 18:51:03 +0300 Message-ID: <20161025155106.29946-5-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20161025155106.29946-1-dsafonov@virtuozzo.com> References: <20161025155106.29946-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: DB5PR0301CA0040.eurprd03.prod.outlook.com (10.167.222.178) To DB6PR0801MB1734.eurprd08.prod.outlook.com (10.169.226.149) X-MS-Office365-Filtering-Correlation-Id: 8168c8da-207a-4c78-261e-08d3fcef081e X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;2:oip5JuNrlW49dNG1tsOWtSDtX/xRxan1oBH+ziOUYkGNzFwjKNMJbqt9opoFo9oKx7emZxODpJmHNB3aXu2QDe4pttZc5p9O3yTR2KqE7HaQksaz0QJh+K04pOy8NjXRd2Y5kNof3sYz5aCI/xwUVMNxWYbWKC6VH6z5KI8HQ/bQvLPdmlejr+Qwe4x48JnPg6Z9whiR6SORcQ0hLF8EDQ==;3:JyAOupNHb2gDQuGHYxhP+5EbrIoE42LZHX8c0hrDFIlvK4tuBCswDU9zp2koUHyz2gRu8+5IG5C9kUqI37hc2Eon0aL5aMrfHaxQlaerNQaM28dyqW6m1yQqqBwksyoEOpNuLWTDsFOcIwRD3qcH3Q== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1734; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;25:fkUNUBegBx0ZPPcWJFd6FpJ/4+71RPyYOckYQN3QrqOt15aQvWFt5sPb2Txny1t2gYSCQ5APXHO6d/INWHrSZAcHDHRzGV/fGlw94sNkvhgE7cDVFO82S/ZquwFgoanhny2JYjVdADXbXNdx9TZkS0anVGw3kV92feMenHsEhNRpVRSRSRjU2cLU5XZVJ6XxrgP07TjvrQjQDszc+3361lS3I89VCcMJQFHREg0g8atSNc6bXr0+4wIiPZ1HYmRAJUx1YnnP7I7KK7pa2AIlS8M6ZJhbrdFMuUpLPFueshKeqVY0qoF2ONmpO3wwD29Hc41d7/V/0C+xqNAXWdEVTAYXiHgoaDxInJZnjMgqdl5CqZ/rZqNM7WBYCKpy24hA03ksHxeCqe02FIzq2TGniXZoo4TtyxMY6N4rC+Ge0V+4Stta9Z5JawOtqzNbyH6LmcTCBGIFyuwZIEa5A7Mw2OadoOMPpDPLy2diAjbx46xXZzrhp9s90AduugEan6w52woacEfyNOTCTKkluhtkWauhjpmqxshma0fp/VRSewb8zx4ZhijR8PreFC/U0kK6mihipZOzeRzin1xTwVl/fcRGS3e3J7qMCeASyiD132Gm/GBxmRbK7C2WZX9/mnFi9iYcAlolxKAYg432MFvhhW/WAZJBAWKZTgMTpF7qU47uvBWPWsev5/mdSL3oYBltMsVRwYyWyLD7s0mTr3IBGA== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;31:8mK1SkpvpeASqXXr3JU338Oo3zsm0/ZluwKkpG6acyBLDs/Is5IFqfvK+Qk5iww9nZsJ9FRt9IEOSM2dVRtbH/PHyrSRfdWzdLp+1CmhCsYHlo6WQxJgPvtVLqoJjJh9R50pvEtEwTRdnGQYGL8HaJdOSH+uBpOCn0x42LslRcp2zLHLUQVb0VfTmMPMvzGqDo95FX7lJ+QfmBV+sOtChvZwGKIrS9ywL5lGK8BrF+7rWrV8LSRE048PcawQp1EN;4:pBm1JyOZYehTyzLvJtRm8zb0xFm9G7In4TfgFkcm9GSek8PeMmpQ0a8aGGM/mNfL/fUZv7AkGMk0+RTrxrcrrDhfzIZ0s11Shsokcd9zLDJkRwUc0oRmGuH8tuQShE9xBIPIQ7kVY+X7bmB16np1ttEznrAWUSYapzAVLA2AyVOgpN3QuajifH1iFFQsaM8BbrnUA7cPq1WJWitUGaiX8iN6gix9eELeuoMnbcWj8qvhwiNo5cJQq0dlcHtYYM/RADnEFhnsSC5XDmx7qPZ1x/uE3LIA53vjR2VtUb76fSs3w11y8C0KVHV/5z8UBSn2D/gf8NYGLzrvIPRAs0CzGB1mzYgW/PyQ4HqWwz1OyPXukWD0eNvm79bEWXn8BAmO5OI18GVC3eaa6H5Fz/olQpPmf9p1LMVvZBidNQt31jw0kixd4VGhilq9nN27V66oI1EwQ8UaTM0acK3qswA4JcipMt0/X27jdbPxV1k39J8= 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)(6043046)(6042046);SRVR:DB6PR0801MB1734;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1734; X-Forefront-PRVS: 01068D0A20 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(229853001)(2351001)(110136003)(2950100002)(105586002)(5660300001)(6916009)(19580395003)(5003940100001)(77096005)(305945005)(189998001)(586003)(97736004)(6666003)(69596002)(50226002)(50466002)(19580405001)(33646002)(48376002)(3846002)(4326007)(6116002)(36756003)(76176999)(50986999)(101416001)(575784001)(86362001)(92566002)(2906002)(53416004)(42186005)(8676002)(81166006)(81156014)(7846002)(68736007)(106356001)(47776003)(66066001)(7736002)(1076002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1734;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1734;23:DR5ALV1KoDr/16IGA9rH7kRqyMVjqb+7UFWR+ak?= =?us-ascii?Q?3Bp5hPbJELZcvWjuTkkqM2tEhivKUZ/sndyAHol/G81dn7es4Z25lGsHjzC4?= =?us-ascii?Q?e2hguJsnnDMPMuXDHAOHzC9dKU80Pv3qBF8Kx1EgPO50Fv9Gl0yRJC+u13rm?= =?us-ascii?Q?lr8JlLSkFMP59iqpZ373tVqRjX4jNfs6nawXfIjOyTuecKfr/A3jtj86VcWE?= =?us-ascii?Q?4Af3VTa7o5MpDP4M+SG3oPH9jJoaZHtHEfQuw88B3jcVl3QTpEyR2xG+DtV5?= =?us-ascii?Q?ddiSNPhyt3n7cZS8hRyVIr7h2LFecZYPOfw7VJ9tZvYnNVvOzFwZms5FV6SN?= =?us-ascii?Q?hVP6SZv2bM992ph2W0yR91zXMLJZ/YknIuEx1q4laCnFjeJCAV4sHHeb+q58?= =?us-ascii?Q?3U4YKMLeCMWxU5hKUMzXjIU7ClzrfM0EgtNsfRNKBZ/muQ4VgEE8O/yMaRI4?= =?us-ascii?Q?+Rh+ZIZi07JCLVS8fY1bfKoQynd1RQ+a8k9xch+Sj4/zp/Nkn0PfI5uTjRSe?= =?us-ascii?Q?m4KxRHGL8FiVAGAENhYfCleQTr1l/xCQVrvX32L6ZbLMkQxlKA7DwY+Nv5md?= =?us-ascii?Q?QqFqphtiMUGeiAUPg8uXlQcef5Q6kf27cQiU4qpZxxqgAu25owZFjHzcvwV9?= =?us-ascii?Q?CjiTkyboAk9Ahr6N7DgkD6d1GJzfqdI0LiCKFJZp/YCQ8wu3XlGCovCpAw2l?= =?us-ascii?Q?ttDhCH65TF1ZCUWCR8RP/ENDdds2Dzasm0qXYQBTNUNBo9yeLDSNt7OLIzA5?= =?us-ascii?Q?paYE92Ket2KH9jQV3wFif3viXWEwOqWxMISrFxBDzHtKYel6xs/3ku7jwdYb?= =?us-ascii?Q?fz1Pe2w3M/B2xOSCRv8h97KmAKm0uoAsaS42TB5EuhyJAcpw9H9RVWcG04+C?= =?us-ascii?Q?YYwqBVKgzRviFGOtx+/7kU100orytFmn7IVXF7S7e0fAXNjaELAjbn1fTane?= =?us-ascii?Q?xzjZ1I3AVmCbzk9fb5iaQWUbix5pKIO+31wjFJE38yv3DiDe8aTQhzL0shHX?= =?us-ascii?Q?xRjorVxmrGqSg5uTRMjDTj4d0VkfLoOo2f2Vl1h6zyjD9b3e9N3hZijSi03q?= =?us-ascii?Q?OzG1hS3BVf8OuEALoUU9pwwHMw3cvHrtiaKCV191LFReK3uRKJ+9vgeJOQ1B?= =?us-ascii?Q?Embj+pkguh7onXtJ57+/iQbTZ4GSCKpkmpP25pftH9E2EsNr5X0vNDycmPxL?= =?us-ascii?Q?B57g2VpmS9WcQDqX0o0/k4ZaNk8Ozua5+86rCIALVL3Yd9L4nhWZp5NvEVg?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;6:m823qTsLDxgUSw4DGTuGrd5x+w57N8e0jZCH6D1Lw1VJqiCzYANYBB51K0xPVXb+b6uazKljxQicCQNEEpXyM0rgMhRi6Vd5HdMbaznsRtwOnorhVlUTt1sTCtG7fHya7ZvkWQsi1Kkx4b5KmW4o/CRjqK9nG6rHChHp/4iYdxogLDNhrPe4KWEdjiBvj4yt7gNbvjx2hKuJi8c5hEx2Q7TumCOX5oOoFKK8U/y7RooB1wW8c9+UlO1+dt0/iRoQJiyPtHHsmlUHY5hlrV3x2lHU+ezCvJl9uzq/ZzYEoEw4Xf15Q0R54WPy8G3sGN6FAxIWNgjuNAz+glTlRak85A==;5:EtryjVYXaUT44WdKYeOLiX1gzPkbx0GWYnazmyRHksGzDjJhDLnHj+WAX5ommK3tEqF3mYsvg2Zg5hSqZxIZZ2ro9t1s8wRQ0DLPvJZsDYCAwXBgif4cJf9+imW5IKFWOt5BQAoHU/sDF/M5LB1/YYeISK95Y9yptKe1Y0pYXFs=;24:jWbKQnEgfITxcg18f0O2pE6FTQyyFEfnPdPmN6PsNlA6wq0QNAcnv04Bdx0w6YQd6TUOqxtShstYUFAuPDJySMcA7uISqsvycIXSVsE//fs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;7:kNDXdufRhTEXg5N5uUAP5YBoXr8uSqEW7Rv5S2ZJr4j9X4diMGkLV/Ao44C8hn4km/8ngAiA74pA0fVy7Edn17+FgJXy5NwSa8ySaxTij+7aBzpU6C6A7T3G29S8M6ds41szypmucatVTrWc1B7Ram643OEIz2F0bdSd7Lx+re8w16YmdqrqN1vTij9EvBpF7f15hQ1Eeuc+1pWGgsDlq4NmKJToO/VUhBd1I4yY1bozNWEBCeso/PFwhd9imuN/272YkWIEngWzLKfUjFiePEIY2ZNgkaD3pWFHeB9mFAvtZ+inh7dwPPBf7REBI2h4UU0PE8NKJauktU0BaJUWigHR2zoRcptq7qVlGb6A4wE=;20:dLKEG/DAwuf9OAgzlMcunljT04hQNd045r/GvqDEQLr5SOTInPFUxchMsKYpMRcpwYJwiMNq8aVLb0pf/FO6YpXO/aiWypIWiMjRV+0/RPdYBkNyZ0YwUN4eSg1pjD9TtRZOT+OkIt6VU41C2GXbko332H8/EJbbZsUBajJ1Xd4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2016 15:53:14.4982 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1734 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3496 Lines: 118 Common code with allocation/initialization of vDSO's pagelist. Impact: cleanup 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.0