From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753296AbdI0POP (ORCPT ); Wed, 27 Sep 2017 11:14:15 -0400 Received: from mail-by2nam03on0084.outbound.protection.outlook.com ([104.47.42.84]:59616 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753179AbdI0POH (ORCPT ); Wed, 27 Sep 2017 11:14:07 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org Cc: Tom Lendacky , Borislav Petkov , Brijesh Singh Subject: [Part1 PATCH v5 08/17] resource: Consolidate resource walking code Date: Wed, 27 Sep 2017 10:13:20 -0500 Message-Id: <20170927151329.70011-9-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170927151329.70011-1-brijesh.singh@amd.com> References: <20170927151329.70011-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: BN6PR04CA0033.namprd04.prod.outlook.com (10.174.93.150) To CY1PR12MB0152.namprd12.prod.outlook.com (10.161.173.22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 56586cf5-8962-45ff-2ed4-08d505ba60f7 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:CY1PR12MB0152; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;3:rzPNH0kpTfbFkAAunzDqyzjEidp6m8ezdYYqsaBsa+zBDRHqCMDo+I8YSo2Ke8yTgyAzb0VJURt3N7Fj/YsN9TbtVWpjDFXt/SwBIhdOafKSGk1tCBHWy84k3DMGdLDsCjM8nHXbeBJi54Cns3s2AQeYkWaHrQMjgIQ0KpDwY1LV3pB/rfftwZmWZ3bMBmR7WdSL7LSEOdqkJUNOvZ+KnR+/B0GXSTHDRqLdiXzgJq0y5h4+OQ3yLe/Y4pVlRsnv;25:4RXGZonISkf4VpotcVoUhTG+jt+6ZFTT+4qIH/Jg+Usxl93Cgl6HwQYoXxHjPYLyyCjHi9TujLJI4cS0ofgzDPQdLv9mDkBXzkuyC612TO7wdYz7NL/ktQq6BHxixMTDt1YGTjU+9A9HKoehNyxih0WyvYM592bL6ktxDHnDD46RSZpRtWtx0/Pszcl6nbSYSEpBwJjMCFOK8/IhelRzJxIHO0yCjhHLLNxDo4xYU4P790xfbgdE0eai1GA7AZn2NQuK417vWVRQCHw8Tq8KMM7CggpcejEAbhmvxESQmz7Znterh2eeViNLR9q84X0gT+WacAuNycHSeGm+8d/DOA==;31:iRL4nDjKMILCJcUygEVzWZEkCBMjKF+lTItc/cGKhxhDeTC8Q5jMqEpH/VWjPVBP9jVy+G75XXfkpf5CY4rpo9g9OOzFZOxwq1s0mXufoFkqrFg2RhvawPXK1kyxpHoT4jajhgdS3VrxLkqS5KpzFZ+vwXQKLssmWMEXdkwEgnN/hltbDiesao8FsyOXHXejTYHIBv3BeHSwAGB4a8WQKTR7Tm/KnNPQjKREIrHovpg= X-MS-TrafficTypeDiagnostic: CY1PR12MB0152: X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;20:x4pfADpqmNxmMt20XHydxaBx8pANq5m/XVxfAGfXui4iE/fzOqQNEfVrnq5+ZqvRFRcEe3Sw1pNWVRPqLQviY1eZTslMFBJqn2ZIjrJq5sOrqhiR56YAbGSzirXuuCK0Tc9KbzxFcnO5PF2NzTt1ZVDIWg7xXpJYfKo5iEKRqV1FqreprTPeNQ7EoZtx6tY5Oakmv7PYmYWKWpCdppEKmGlceHhk2n/xrnvkSB8Xg895yjwFsk8ETi9NMNyV9YV0yz7otzg77lFoGqAp3NEOivh1KpBOp/xqVPqwEjtzEX3hNKNF8Vkb0HT5owxJbx6vRTwq1fa/RpesVTpgHSPjCgPTPuJio0ugumpYfT15kO6Nlhxgoegi7pBwhs2W8urR0ZRnys1rjczmIthQfj6xrwvEe1iRLfEALnHxdKa2ltGm1TwkYvQunJZqOVFAkOPewZmljRUm9yv2HQT5NwK91sj9lFGUfkYuM4ilVH4kU8vpVNpgt0hTu8SWBJDuVZjJ;4:dqThYDWl/GyxxUfx3npkSOuZWC4DvfLVLDm+OjyM7KdZG4IKXM1khoQPkGJPHUwQkIbtrQHzPKmsc2eKrl28f+1/kufj9tGxRYDiLKX3GVTSRw4J+y7hl+NMExdvMXjY2EIrdxmUh2m18l5/Sm86+jme1LJNw5miyqclluOM3fbF4MBGYn/97l+R39YvYn2xm7LXxWoyNN3N6p870YjzeeJP1iqUb91HJVBByJgwyyAxoYT/NfGtyPfl/TxIb5VE98v7ARpLnvkTuFbekbzdNcDH13NIwEyktDg+l5O+d/PrRymM7fR+K77QWVSzy1OjjFSDbqM3ypgN+eyO20WzeA== 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)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(20161123558100)(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: 04433051BF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(3846002)(25786009)(6116002)(53416004)(106356001)(8936002)(4326008)(54906003)(1076002)(6486002)(50226002)(8676002)(305945005)(50466002)(5003940100001)(81156014)(48376002)(81166006)(6666003)(68736007)(36756003)(189998001)(7736002)(105586002)(97736004)(53936002)(2950100002)(101416001)(478600001)(16526017)(16586007)(76176999)(50986999)(316002)(47776003)(66066001)(86362001)(33646002)(5660300001)(2906002);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:MYF0XhTPNtDpZnAr9cZGXVWrJhLXPcaKROHHHlQt3?= =?us-ascii?Q?quVGCOyEHRXJP21eVHuhFAUvx/7e0RmSFJJNBu1ROjs4PBxUYqmLqSv75tfv?= =?us-ascii?Q?PNZf7eytHGmBBasrKpRPtZkCGK4+2tIflsS+8djU3I/qOVTMUYfIOvkdHKgy?= =?us-ascii?Q?uIQLB2Blpvn2LmVtV5Gd38UEZTJl7FUQe1vxAtjH+wpDZoOAi5IgJnpdWLhv?= =?us-ascii?Q?dG9EULhMaYdmJjzp7ArCDpyrSMSkZf+zeVhH70VO7GKW9mRCONU/Agw5BBhE?= =?us-ascii?Q?528wAnvIJzFlaJMlrFq4FFg7uA3y4yJbUPFp6LlAznQc+U/6XMwoyK0uQu8G?= =?us-ascii?Q?JXbuGK2N0dcR+n+vISLKu/Fsj5cmDH5lxcjcfjN9bYVwwQyNhS0D7cf+R9A2?= =?us-ascii?Q?qK1fJNFM5G/ezuzpJtFSXHSwHJ6GyNUZdTqwF3HHw3b6UO6JBfaL6wjR0tCn?= =?us-ascii?Q?ZJHXAyUYBrGVClkkuz7C6DXDCKmNOxjR+jWzpUYDvZ8n4LX+e93gdGEa+SCh?= =?us-ascii?Q?EbBzT/jcrz8xmyj3VTR7DLo2/ECjEQIPiGW7CcgovxYe4dsEXULAlfycWGnW?= =?us-ascii?Q?rG06oY8srBWoEgtyxnT+4XV4Q3hwGqY3LqIOCvQoKSI46A1Vo/VfH29hzbcr?= =?us-ascii?Q?1KYwcsqnHb31JJVHm9/QnA59QZkDFTxoG8AT487vDTHUOwwuIzBI0BSs1lrE?= =?us-ascii?Q?ICRH2XslaC4ECvfuyVLF1d/myIy78O0HAhuERZHqp9cz41yM5EsZXSvVImX5?= =?us-ascii?Q?85XGup6K0iS9MbZuW53to3ywdNlU6TOIm562BaL4q1nXeMUxezbMV4l1WS7u?= =?us-ascii?Q?zXsOG+5F/yEeE+eqDPoD/p6FZgyabvAeQwtjj0wcSBFqRVoUKDo5+ye1rWXA?= =?us-ascii?Q?/fAfOl+h+Xh+bPvqrmLKgcauUATMXCDNU9MdHFrEzaGhNZVocFMXz0YqkBGQ?= =?us-ascii?Q?QiWN068sbD+xC2xv4OQ/VDydDQq1nklLQwTaLF2FlzlFlUj34Z0kFxom22dF?= =?us-ascii?Q?Jeb7EUC0JPCsOcDlfvcN3kTGsy+xERDE9GgnsuEh/eqHQRLYS80ZSZT5kE7s?= =?us-ascii?Q?gQAsxQGGik0CrWv4pIp/HcMoXEXX6i35e8HhLz/LX8bU1ePyg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;6:vZUWMt7ML0LzAP2hQimuHmmXpdBRBgEAhEG9OcT/xSLlXkFJl4ztIKc9A3Byl9NZPohEH8d2lA+y3P76XzNZvYleA5rxSlYO8y4xYSYsHVA3gWNccnTPnS3yrVQdNd0Zh2V1Ql31k1XutX26f7wMGnpWuyC+sc3onAO1VHTAc35T6iQ8OKUbNbH1G9wafnfsWF8Hy1kWdbVDP8HcVT5IHoat3ua4dnQ9pjfZlSsnh242x3gpPSdI2lQGlNJOlXYE87oMrXUxUhpOoXHJ+7ADhQflgmzz8vmsHZ0jnoTIt+OBnWs2QY1kNZFYyHi9CwVRV9TTQdMbFvcql713prRM3w==;5:NZ38rVV91lFl3zEXXrJpSJT13c8UiSy9/0yB4Y8cW1rre4FiCd2UAUvPHVAF16ZJlncQDGwUzTD0rBT82kopEuasYou/Ei2xm5n+mk2OcfJNS+f3QGOz1Zann7vrI0d8EBdQdVneqhYmYLwGZZDEBQ==;24:083HGgmQ/qWTXJjbA+5U97hJ8rpDQMuj6OzT9+uRTDPJc+xi7pzIIC8utx0X0ibqVZgv585SA8DtYH/sX0m5/Bc0d1uxgWe6CxdBaAXe6tM=;7:BR6YP+9SIBY/ToCCF9jtX8BtXoP/IsXzyP648Vi0UM52TbuKVFERCTxKymwsZDyYcoa0beJSxULqMYx309hd5nXU9u9TK1aPvt9qH5w46DY5R/hoHynmxwAHv0IJdEcC7P0cxQZrs8A2wlzZJiaGIuwGqnU/jinMhv6k4sAqjVkUu0zBc345exBp8YSpOtEgEVaN70y+DIrI+o672uhAedImLcHo3vVihxUX7Lvcj1s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;20:qVWY+68ojx49OA9yZkwk+dcujUoL1ePYHze5Rp9nZnwIPBJLfpzlW8K80LxOFdv+24AUSZCj7oRJ5RK7LkEeJJF4+Zqa2j2txlACnphC3Ixi+CmnyKW5hoMfWLx1V3eYMHYdhz0VSjyEiv3TiHIUAR8BprWQrjHow1TgKjfddOVORivuIMMNqi0OV4jDB0QvlPoEYj5Pmtxei5fKd5rHikVhomAg72RQyLBSgDBKN0jSTbtuXBqn3TUgNhiWOgLj X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2017 15:13:58.4161 (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 Reviewed-by: Borislav Petkov --- 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