From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751520AbdIPMfF (ORCPT ); Sat, 16 Sep 2017 08:35:05 -0400 Received: from mail-dm3nam03on0064.outbound.protection.outlook.com ([104.47.41.64]:54405 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751443AbdIPMe5 (ORCPT ); Sat, 16 Sep 2017 08:34:57 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org Cc: Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Borislav Petkov , Andy Lutomirski , Tom Lendacky , Brijesh Singh Subject: [Part1 PATCH v4 08/17] resource: Consolidate resource walking code Date: Sat, 16 Sep 2017 07:34:09 -0500 Message-Id: <20170916123418.37807-9-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170916123418.37807-1-brijesh.singh@amd.com> References: <20170916123418.37807-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM3PR12CA0051.namprd12.prod.outlook.com (10.161.151.19) To CY1PR12MB0152.namprd12.prod.outlook.com (10.161.173.22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3d9b5699-feac-46f1-96b7-08d4fcff518f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:CY1PR12MB0152; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;3:Q8FcArR3lOBhF8dv/G5vUhPlB1xPWXkWndG+RUgbyrug+I7gyP8CG445dL3lZrfBjzZAHgYjWiRAQBD/tlsPpfezldzHfnV6Ce1zyicMVCQCAA75eFUuP2N7An+UJ7/ehoh/p4xkmzOqxssRiaktXaNLUn3fjIcsPro+5+qz9u2GKjMunD7S6YCzymdNwRO5gLHWGwMvgt+uAVt7vYFZoqg5mhEqK2xYIz+vtqSgVteKeNVONjh2os+vJ67jg5Wb;25:eXRQpSC9D95YLj2eTdjqwtOtpnOIuEAqCPPV6QkUsOosE47b8/VhQKxP1aaTKVfBLF0z71CWvqcrinebA4PW5vH/jPEa4bHhDLj3a/sFTpUdShSQqpekn2oX+5g1IR/lapV3o6dUQQuXDe2ro8DWfWBIw5MnAb3xc5/rJhANY40O5zxx1DWS1nsERGjswNvKpKFkUuN7jB3MMqDGlNB8Ixambtfqo+ZI4/IwulXvLXnEFGTWPzqkRiT3gMeZStb//VEr+4+l00JLQidWeriu13zS5b57l9FTbnbJHIEMysZKdtiKplgWVP8eoxzD9UrXDRCc1cRgTJEyMjGJI6JzVg==;31:VbBy3hDpjufVSN4kWHGEbGM5zWuB6pasjbGX3spuK2gjiRj1ZwPqpxsqih0jwnuToueGrsqgORaqcsVHlzkfYKawcKMcPzbzFLsJlMCJo/9ilA4Aj6FtSFjKxelU6jO65YmXdKdk80Qfv1nt5JxJTF30EguUqedhTLGFILNBGqhTp19W4VRy5GqbmjGoSZ4V55QMPgeqMcUUN4cQkuGp5iPh0LEDVw0MF9zX+5v8OW8= X-MS-TrafficTypeDiagnostic: CY1PR12MB0152: X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;20:EgLyLw+ShBSPPDyynqHNvWaJ2PH3zlF4KzTY/XmA61IJuBUowDARkc/Mmc1aubAXdd76Dpq1GM+1rMWXY742170gER0Ro3yAldMyRrfywEcLOxxuVik2NI2Z+cw8eyFzfNQYbK9eLLyGxnHpX9p0qKwkcTcuTccMbtWi11DKgraA0GcXkKnH395O/M0LIbEQZQpEolOcJl9tDTPp9251znPlsS4kTvp2EiVOmw36opqZNqdeLxJzUdh+mLdzignayJ8vKN7d/ueaW4FscFxWZFqT4IaxKnhmOPEjun0MdFQOV8Dd1Zfb4XJWIQC28XFf5FtWVh+6A4TqeC/uEU8PLBALka8KeZjeK3fnIsgk7NVoGMZRrhV+Jqm0gZSPWHkdC6R+TRuql7Ifx7odVHz0t73Isatfqgvj0llGdKIi8r3wJBF39LWTm3w1CxjwVL23tiTDWsGVzSsTSsk+mtbc8WGRVitGEtLDJtV3pyUxG78HFwDEND3jKw/qLPZEgiTs;4:QAoMUYjCsP+H/v6l7cl45EfZOgTRJy6YJIuT+/nk/ZbCtlUZ2ONni0pyYEx71+BcsCSXrpZa1jJjspXBT6MwxefmggwkmN/TX9JQt/VnHj8pIQ9bs6W+2gIJjxcXaYBDyQdTqZf6T41u9jK4XCDuvkbaFybpakl23d+JLg81Ay+pEC6aix6tAj35X7pkAsvNtY8sphfwrB/VJ80l8MXEGUPsQFaf/J25FieYZYwO1guOaZmHM2/H2RsrdygFjYql8/mVl9BlCWZfD3U+07RCdLu1zVd5nYJeliXkHf3tCxdng03Z1VrQJmee+2YkjDXRS7CONcIxDja63lO7+LeK7Q== X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY1PR12MB0152;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY1PR12MB0152; X-Forefront-PRVS: 0432A04947 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(199003)(189002)(6486002)(53416004)(81156014)(48376002)(81166006)(50466002)(6666003)(5003940100001)(7736002)(54906002)(316002)(16586007)(8676002)(97736004)(2906002)(305945005)(53936002)(5660300001)(86362001)(478600001)(16526017)(1076002)(106356001)(110136004)(3846002)(4326008)(50226002)(68736007)(25786009)(6116002)(33646002)(105586002)(101416001)(50986999)(47776003)(2950100002)(8936002)(66066001)(36756003)(189998001)(76176999);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0152;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR12MB0152;23:YTQ1+6G+Kv6MjdSgGoaovRjUfg4oDjA6//VBA+XSa?= =?us-ascii?Q?QNqMbA8tEVrHJKaSEAEIaFYThIJK9pLf/xvpAoNEiKcpS9gGcgL34RjdcA1K?= =?us-ascii?Q?2missShxgBnDG4qnks5j3dnjHiuyQRaXDsStiEduoexXVWjfJLYCEeRSKq3Q?= =?us-ascii?Q?lj0W/SUvjjqWpltvcL2UO3okIamKL0HlOFmY+TD6qoAEQBhej074eaWVlmNO?= =?us-ascii?Q?pFdEe4857o2Xp6uhX416iONo1p7JkmW2zrvQ31a4nX+hOGbk3IFtXgxkyORI?= =?us-ascii?Q?SDmcVv1j1qXkrDdX4RQrSYnL827eM1+7dCpwxiKN3HHzWRHlWR3CZV+Isrg/?= =?us-ascii?Q?g+TPGFxyK6QdF8MWHNguUKCun5Up+NhjmWck+0F9tpv2aaOM/bZ38Oz3swAK?= =?us-ascii?Q?i+yqmK4ngSSUfY9C3SCFNaTA3vWvosXwsmx1Ma9jc5WFgM4GhpTMPbX3M4ve?= =?us-ascii?Q?tNb6Yiv2015eh4OzrB5h9ajwO3mDaQ+NFJBBvYfc3Rkzll8ciuioOGIRlQgu?= =?us-ascii?Q?+/EskLSsmxI0TAQ5KLI9i8sDSOlzcg6djIwmxdxa/gYP6SEJNafyMiWgP+sM?= =?us-ascii?Q?O7nPBAXMx+4OsxZiBGyYumxQyfRvRQQP+g7TZI5q1mGhPbZCZcVoNh8wEGXs?= =?us-ascii?Q?DqzGUb5UN3f0fA1LfB+lcuvOrR9VfKxw1udcg1Wt9nVNOWc/uZnXt7Fprht0?= =?us-ascii?Q?7DLGl42B2UKnEEFm6ZKseE78hDIpONLYGscwhRScG2JB3+AaXzdQR0nnra69?= =?us-ascii?Q?uscFMIrMeRM7MxcH9t4dbGX+t/GT7r8rSECwu/h5z8Rv5aMjP3G1JnOeiduc?= =?us-ascii?Q?d4YkBrRoHKyUkVcYO+KxYfVNuGCRDWBBTElxNFePphQX+ZhqRty1NWe+GAwW?= =?us-ascii?Q?/hMcLJrCYrQjTqxZTEi5enZW1Dp7QD0G8/oRZdhSVy1M+g5iPX5dimUN4W3E?= =?us-ascii?Q?2EwwPsdGCqsjsrgBRPz7BRRR3GWUfRYW50IYyOy+nswv8olqznTp3O/G8VGR?= =?us-ascii?Q?bVd3q36R+GSbHftviF182psqbOYEZiVyBtk11I5OwKYgB0ESp/GsTnB6ASHV?= =?us-ascii?Q?JEOc5qhksAfQGHnkOxAeYgu2QndqUlvBLPNoLMj3F7NJmbj8A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;6:0HnGcvfjTBB+oN7amI/yKzczwKH4h1T4Z9+caDQzd2T+i4iZvZsh9VspR1V3pN+RvXTR7SDonDauz/TtXzKGsiZ3pzKZxyS2zQP4UImdpptILqY5HXTUeTW5tg2cIjfsolbfcfs+38H/AFT/pMSSV2RRRhuXVhtA6nlRS8t85GS1PVIErs70XmsWGtRZBTMqKEMbnFOKjpOEsbw1mtE0ZzHv+fn2XEc3yD2r0PhCI6zEFuERnORVF7saMTw15KIqNwqVDJZ50sXCU2gnlmnhtBWwMuUPtmD9S1WerayicuWmWVXrVvae0qB9LxMsYlHRrZULlVNV8OlvkqZQX7/vcA==;5:D26DqUfGSP7XLCPrQPZqwWeVQEQwg8stLYfR48+oNVM/HSPjvGaz1TVJtDyw4BC4c+5dhAKA0bOn18X74WKPk2Atu2butj6SBXn5T9bx0xiabs8DSy0ZrQSnW7uwUJgHr6qTbP2CFW7lqK3i3kHKhg==;24:raZmiUTPADQu137qovvdbwzDA5rXNsi7BeYv8Bd8Tk9gbYvNOR9PbEHXWfdN7YhOg6zYGoqEeDZYvHDx2FXmDIgfstLU/0rI6Th9V3ghjZs=;7:xwfag/wqxcOhiFIUVXOLPNBASCjFhEuPXGQP61D0cfS0zHsE1KUlpLaKKVkM65br9mu/Y142yIT+5n4APDh8vlEIx47IR/N1HQcFSQFojY66MkukaLfBqgBgc5N1H2ZosxKT4w7E+/pRnOl163bWOdpRiRHpzd9HVucgNmqgo3qcFPq44ml6UtX9ACwJNGy/X8R310reJPd0vqmsu2hWOylTm5fbg5DZCvj4nugWq6o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;20:bqSxhPv9fys+NFa2ZgCvxVjjp/Vdws5RSdmgf+YR05dV5a/CCe1nu4SoWGwbmNTiy94t+oBC3GyoWkflkoFdMJfDFe2yz2Jcxp2ARW2MNAwVt5WnHhmPxBWrGG9nJZU/pNtibUbGEGKa3uI5lclrut3E/Yx58iecJ08H+6uGvVmcKRVHOvyP3uBT4x9izoOztGX2dvjqh4RWrJ4lNtaZgsgo0TktVx4dWCeQ1n/jQJSRcT+nqIGPjymVfMMyyB9s X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2017 12:34:47.6463 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0152 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tom Lendacky The walk_iomem_res_desc(), walk_system_ram_res() and walk_system_ram_range() functions each have much of the same code. Create a new function that consolidates the common code from these functions in one place to reduce the amount of duplicated code. Cc: Borislav Petkov Cc: linux-kernel@vger.kernel.org Signed-off-by: Tom Lendacky Signed-off-by: Brijesh Singh --- kernel/resource.c | 52 +++++++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/kernel/resource.c b/kernel/resource.c index 9b5f04404152..7323c1b636cd 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -400,6 +400,26 @@ static int find_next_iomem_res(struct resource *res, unsigned long desc, return 0; } +static int __walk_iomem_res_desc(struct resource *res, unsigned long desc, + bool first_level_children_only, + void *arg, int (*func)(u64, u64, void *)) +{ + u64 orig_end = res->end; + int ret = -1; + + while ((res->start < res->end) && + !find_next_iomem_res(res, desc, first_level_children_only)) { + ret = (*func)(res->start, res->end, arg); + if (ret) + break; + + res->start = res->end + 1; + res->end = orig_end; + } + + return ret; +} + /* * Walks through iomem resources and calls func() with matching resource * ranges. This walks through whole tree and not just first level children. @@ -418,26 +438,12 @@ int walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, u64 end, void *arg, int (*func)(u64, u64, void *)) { struct resource res; - u64 orig_end; - int ret = -1; res.start = start; res.end = end; res.flags = flags; - orig_end = res.end; - - while ((res.start < res.end) && - (!find_next_iomem_res(&res, desc, false))) { - - ret = (*func)(res.start, res.end, arg); - if (ret) - break; - - res.start = res.end + 1; - res.end = orig_end; - } - return ret; + return __walk_iomem_res_desc(&res, desc, false, arg, func); } /* @@ -451,22 +457,13 @@ int walk_system_ram_res(u64 start, u64 end, void *arg, int (*func)(u64, u64, void *)) { struct resource res; - u64 orig_end; - int ret = -1; res.start = start; res.end = end; res.flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY; - orig_end = res.end; - while ((res.start < res.end) && - (!find_next_iomem_res(&res, IORES_DESC_NONE, true))) { - ret = (*func)(res.start, res.end, arg); - if (ret) - break; - res.start = res.end + 1; - res.end = orig_end; - } - return ret; + + return __walk_iomem_res_desc(&res, IORES_DESC_NONE, true, + arg, func); } #if !defined(CONFIG_ARCH_HAS_WALK_MEMORY) @@ -508,6 +505,7 @@ static int __is_ram(unsigned long pfn, unsigned long nr_pages, void *arg) { return 1; } + /* * This generic page_is_ram() returns true if specified address is * registered as System RAM in iomem_resource list. -- 2.9.5