From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754261AbdJPPfR (ORCPT ); Mon, 16 Oct 2017 11:35:17 -0400 Received: from mail-cys01nam02on0072.outbound.protection.outlook.com ([104.47.37.72]:39104 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754057AbdJPPfE (ORCPT ); Mon, 16 Oct 2017 11:35:04 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: x86@kernel.org Cc: bp@alien8.de, Tom Lendacky , Borislav Petkov , linux-kernel@vger.kernel.org, Brijesh Singh Subject: [Part1 PATCH v6 08/17] resource: Consolidate resource walking code Date: Mon, 16 Oct 2017 10:34:14 -0500 Message-Id: <20171016153423.2980-9-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171016153423.2980-1-brijesh.singh@amd.com> References: <20171016153423.2980-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: BN6PR16CA0015.namprd16.prod.outlook.com (10.172.212.153) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 85514c2a-5d86-4096-144d-08d514ab71e7 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;3:i9o8aFEcDffksQFKT1AugyIRPLHyE5HmZqSDiFk8orwRY9v0V1ULD0NqUHPrmM0nJXCPG1SZdmukibOpS4IIAkfkZHta2Rr5C/MWRbByZ/WP98NLtJaHQIuOBo3IonzQi2iMIz2qlaNSFkPORM9z/PK3r3W7y1ohObv7nKa7t09M4iiH+qS0+0N1Uy6ZI7ZypXm+Q7jKwzKtrWkqdYsdlZhXdEdNaaEJr7L+A4f7cz2/09K0Y03H+lNEMVpmhlht;25:cnJTEm3WNoOSxgGwiJGBCAZqpyCd+nqCMhHxZcf+JZhAXde063QYThZkv6hBgYPcuLuzbDvYUv7mrhWjYVbJTUM2ZLBPD0sNUPbMeAXlAg2mGPfjvgknKCtlzqgzhui9k++co1mEwBV32r622urLN7kCM+sv8ZWW1MoasWqi5tCaJHbb8NOMX0Ljd4BoQQvC1nX9Jx9VSehbG8EG9hAZ/19kLg4CR7kQMY3n4HajgoW5YPenlIY0YLI6b3gQ+u1fsz2tp4GE5GM47hL9Jk3MI5QDthDddrscDg21JO0dHWWvUu+CO9AsW61QIYHgAxBAKqn7x9Lww5nh8OwQFfqWMA==;31:QxErrj9SCsiD4lxM/zvdBeK4lZMBl2kb1IQMPUJpqcUIkjuBF+29vjDvaQTEbIVsQTV31XX31u49VDSJGcfDmU8Y93Umyqa6xwEZwvsrh2ALYzIWgxYw/0ImuDvBfpE0cCeJNgsN+zBpHfGN3wgVt4YZmPrltKq8L+o0TujNu4NxKge4nIo0y+PcBweWBdh8OYxospQrYrKt6r7jmd3tVUBAwCrsVCsesPLmkRp1w18= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:EK3yWTfRdsVmq/5gbm9+NOU6YGAlt+NNIDm/UnQNURS974fHHyn2LBOIUTRy6lMGGfaevpvFaOZUsKTrx+Y26VLBh8oNq7hbJsDvK8v/Ln8vaPunG0TPgsoClweAdtao/YsUGWad72zHUQw1riUErBHLRJlPZN68BGIiErKyw7yB1Sstz0AQu/PssHnNdVP3Pl5Fi8kkBuYRZ60jnFH7WB8p+331BiyTzJlilfhsqJ1vPhMbDLE743WcIDBDTslvqYvc1o9B6T4rN8wIeF5tCCIOecFo2Shok/CV/Z2mC+vr4mi23v9MErlfKWFTxrIXJujuffD9ddkb6ZadwRY3KtiLsUFE0aSN15Ife9iY1jxGpXASBY3PGW5+qf4smDzlW6WFlOgDcy1EPdsCXralDoGY5HbTPs1Jw04/Qmn88G57VeejbhP0M+g+kdp9Td+79fEQAMz9fkSXEV442C404r6xAqtGKrwdItQ8kiUfCxaiR9Muu1koVAgkhoQEdId1;4:uWKZgZMpoblT7x/z6ZxcoS6Uzx1YSCaA9EnEeax7jtnMJZMq2kJFsdivR0AwEi0KRfhmqxJ5KDYTQXpg22w1Gbh6JEf/xZcxO0GvuJXVFqVCcM/0GTFcIp2dfplop4EkaHj9UurAaujzJqfyCt1F8zz//E0F9HkAeASpUA61wAXqVBAlmDas13HDadJdzSbHLt4SpBkSY7jHFgIHbtHBadi3vNj5dEo7YCfj/c6F6h7aNX4uDm+4lKB2JTWeeN6KcMKMIwrTovio8pOy+haoKLMJJhZrjIsFpzi0X4UR5LueCIzd44Jz1KSUrxqiOMTBY8GmkJ3cM49cfo2nI99NmQ== 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)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0158;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0158; X-Forefront-PRVS: 0462918D61 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(54906003)(1076002)(316002)(5660300001)(16586007)(68736007)(2906002)(4326008)(16526018)(7736002)(47776003)(305945005)(6666003)(53936002)(86362001)(33646002)(2950100002)(6916009)(66066001)(189998001)(97736004)(76176999)(106356001)(101416001)(8676002)(53416004)(105586002)(36756003)(3846002)(6486002)(6116002)(8936002)(50226002)(81166006)(81156014)(25786009)(48376002)(478600001)(50986999)(2351001)(5003940100001)(2361001)(50466002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR12MB0158;23:Hil7j/ErQlCbiPPeU0wbvbRCS+cKLuVx17Cf3CVQd?= =?us-ascii?Q?e4+pJRpzFb7EMHJVZUA0p0rD9FFCoLVXaHUuC407is8e2BitDYbkJ58V/26H?= =?us-ascii?Q?n9t2EdjeD3JZnunybCNKl7E2Bb5phtcXYFjlxX0E9X3CbVwb5NpAahkiIDY/?= =?us-ascii?Q?GZeSajHMZrf0+HWJif/gE7kC/nzKxKpSZlEiC0Ada9BfTdx1q4cppMqn1vu2?= =?us-ascii?Q?sTLjpUqDwHcgpqbzbbpCds9ncms860P3i0dZBwUa9beYFz2udVahtnpoDjYe?= =?us-ascii?Q?RPRwaYq/vz3rmLuGidefY1rbN2zbJxPkH+09py0OOWGb7NE+QQcGa/jmy+Tw?= =?us-ascii?Q?GehKHDZm0+2kfA/iDCKQBhChKV8kHg8JnYIAzVpuiAvL07lk5A80YSZtfj0g?= =?us-ascii?Q?7CwG6A9Ig+InDYDqv+o14J9Tx/vBydjhqd6q4MnTKfbvZpq66Vjo41RVE6BW?= =?us-ascii?Q?r6rU5+0K69iUBkOD0n9QAOu+aSVBK5uIyU7KTsviVdp7N1Obi8XV+nYKzrX1?= =?us-ascii?Q?/t+MBwaKHZllE4WJrAy4Pgf8DZwrzi1Tby4K7DBprXoWl1MsYr0rzoXe/zPD?= =?us-ascii?Q?e2p5AkK+TVZzEGo5HaIehV4rmJAX6BOpnSWq4GZYCQOBF51IUGZnR4AZdqGH?= =?us-ascii?Q?c9BVYHzb7+Zan4NWry2KzmPvjs9E5sZDjibIMEBE5vLYr205nYQyAFSB6juk?= =?us-ascii?Q?Ux1xVsn12u3WOC3s3Jl3Vm+f+N5Lc//QkjecIDZj4At+E0Pxe+rHDi0/4hoQ?= =?us-ascii?Q?NH2QgC+Kj19ha1cgR71AYw0tD3lQULVFkjKYh0B/kKNs4EhDnrM1xrxKQwSQ?= =?us-ascii?Q?jRkDnm8FvPTRj4hcUVeM16qKmUHNNQF4GVyfyOQttg1Ve6wDlM5xQ6bWwN9k?= =?us-ascii?Q?xycMUcDEePQx2UjFzHX53Vzjg0HkYIHgVsRTfR1NdKJSbNxlXLvphDAIPC20?= =?us-ascii?Q?gR/BZJ5kC7TsGx3SxMaOXXrfg31UbPHG8F6ccj8T6K8WpJgRkAFbls3Rnr3w?= =?us-ascii?Q?GHCIankGE1Zds8gCllYT3dip9V2ZlS4dvL+n16i5jFyS9o2R07odnktmB0ac?= =?us-ascii?Q?e44SexYHhEUMKFgkvQe77Toc+ZhiJq0uNgYZfVwLp/zIObkgLeNCXCb9sT+t?= =?us-ascii?Q?SI05BcDQlr1wUEsG/hjMAzMmf26nomw?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:/FPoSxHDafsFbkXObhCg+zQ2uyqjrWleD64XwSBzN6e1rce9pdNDG2p7llgZshCo1r3lZB7ANwvynQojO6mHhbG1ejFOOQWdpxkyq2eoc+N50caXm8JWRCL28mvsjUdPfJKjh6MQDxvvAyHN8hqLm0OaO4/sBRv2Gx9GkCfYXQ+yz+Nu5ZxtftU86dnmTQvAgxwx+7y9zTr5LHvYrKolNtV7rqWRvAxiUFmFSrPblyZUSf53/AkOm3sVb06Aa0jvJecCLZBuiEW06xMCYHBffU8yoJRlacn1GzJ5jJXCa8dXyYPS3+B0w/DCM0jTqMMSPN95FqPy7UUJ8PMWB8Y/7g==;5:NcRB30BTLmXcqz8cwUNbzmwCXjDmVcTq3VCFT8STaqc6Fp30mqSIAXX0EP4pf03JOsoXGx3Z+7R99/32wYOpBzA0fvjjV7iwt3R8800T43BsE18WZQtETvz7wOFq8LSql1SlS9b7RvQXqIu5YZ3WQQ==;24:rBCV5LDV6l3XJJkgnsCtazlHYP4fHuVMS9XRrr435QfxOtJnNwBRAdF6c6jjEX8ZvbbxdLosbe9Qmv+pb0JFgXR+PUUiOWillLuqxoI2W2Q=;7:qiaMZhHNQOuNFB9qzUQS7iGexwx9ITapBOlG5L6xT7WMf6rx1R+pXvSinisiIDGd0+i639Te5L/lIyoMIq3zEYw46etV96GmP1bdxAQTyTnKuM1nkVV5frEXaOuMqrgZz8WzAqHA8T/Dw23/eorZ4MB67QYE+95nWuVZjnxdqIrWNOefRofQeRyHFfq7qpwMsz1+5kyEGf6VscINYU9ZqcS+XfRLGtGv4AtpJPnDcnI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:onbqX4MFvWpVZuxRWCIUfDkWYSf8gpYM1yrP+ZPDdQ7ExxLu8lDQ8nXRT6BAuPTVac9ae78sFhTpZueq6Dk3kA9etsbEhE9fGyQyuaoP0PvjfWHamZ6XFDRvmp1ND4R7rsNtXHzW49hXyGpNnWvDdMuaBmYx4HFQ1LcK0W5mJGqFWQoMlAZSjDGitgFeTJym5pBXB4jtgNMN3lttv85p3j1MQ4LAJRJoedxBwAu+A8fsB4CjWR2NV9BcpG+slh8V X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 15:34:52.0257 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 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