From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753134AbdJTOhE (ORCPT ); Fri, 20 Oct 2017 10:37:04 -0400 Received: from mail-dm3nam03on0088.outbound.protection.outlook.com ([104.47.41.88]:47104 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752331AbdJTObd (ORCPT ); Fri, 20 Oct 2017 10:31:33 -0400 From: Brijesh Singh To: x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Borislav Petkov , Tom Lendacky , Brijesh Singh , Borislav Petkov Subject: [Part1 PATCH v7 08/17] resource: Consolidate resource walking code Date: Fri, 20 Oct 2017 09:30:50 -0500 Message-Id: <20171020143059.3291-9-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171020143059.3291-1-brijesh.singh@amd.com> References: <20171020143059.3291-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: BN6PR14CA0029.namprd14.prod.outlook.com (10.171.172.143) To SN1PR12MB0160.namprd12.prod.outlook.com (10.162.3.147) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bec63ab5-9523-4f27-f23f-08d517c73d7c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603229);SRVR:SN1PR12MB0160; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0160;3:tFq24oTlWgcXctRRgm+DlSY5+tYZG76f6/4Ha9dOsPyT8dNvrGyPojqGhh/BNjSsYqYmCuknevSaYLsxDRHapjlnz/XcQ5Jpacd3xWd3FCYye7aouwCnV8CgF86So9ui1kBlte84spU79sEhflvRMtXNSmaEJJOvSxMGFdPg0u/lOwvbApeI5zwD6z1ngPvtEWWHD5bNPjBSrSE6dYW4UHF0gqjoWtEeJLl7mpc91cltRhuPvHNTpY7L5VnWRaiB;25:e7FGQV3CsUTWbzPc2WItsjVJ3it3Sxv52TdTAPQJd03EqkYbSGIU/VlzXEAhE686xtHQjhfTJwG5T2QyKwjFC0dL9dGisAZWbyZYqfc2eq8AZKCNZ/A2RG53kQi0vhcydNvOQh9QnEdsTttyQvGjlD2BssvTpnRghFzt4MayzPmOlQdg9RIvucEqGBC5Y5wB6YxKvFtsDLVm8uJ9tCPsyMsaBAFYn6an4B/31FrfKuHPw3jbiPmOd3tlQzuD4MfOLxAd0DuVC6mzW2z32tGqvJTbh0YiDlr9FmdrHbpkzZNBn/UwW/5407Xyta+UMg4z2HBFihJUMf6VyNRtAFdIHg==;31:TuAjvCD7YXJr3um3dtDN/Gn2Qj219QMQfzQZULwFK61J3DNvSU3dSfhrhgdhoZM9f6RR+McUnnuaIwvsWJ5GPE9k8b3VaWmeJnCx9C/VfiES8tn2oNWNZARxpw3gGTF+hY7VURdeX72qP3V9EsifY34OGf5we7o3DXfuNCmLPO0Bv3L3GhrbEL6V84g3sWVA1zgZIFEev3Z5KvGGXkOXXUeNN2m/IvQHrfHEenfu5sE= X-MS-TrafficTypeDiagnostic: SN1PR12MB0160: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0160;20:MVnkXWM/I9D5sqp6yMdpWzIYnW8ewS9Xs5gT04Nu+0SYAkCofplFZWnWO1kDZyrHtjTo1d40K9KhD0PAjlckftWw7qZXoMrmrS7D+iIEgOMOplaIg5F+P5hMRuiSD9L1J/iem72/+vO/snHRAXUvUlfcv7fj5vla75RR0Qs0AF4Yfartl4zo1gE3vAlsyZLbR4+VZX5A6TW2bAn5WmD1Vd0uu7DyCSA3ScgM1ViT4tNQz1vF+Z8/7f/Huuf73Amvn0wIdh3HlwVKcISyrom5LPyouoFhgM3Nh82Y8S7mn7suYd9H/HMlkEohc4St7PBqExEwTFzCx/NEHOPISJsyDw/4WzK2vtO3PYlPo5fciUDa+aX+LG1VY3U3R0H3m9jOB/ZUCCMdnqJn/Cwh8eowUXv0Ma0Vhoj+67MMxAArek0S+iL5ebKOrUnaUA7tuljhdYrpv9G7xxzWAAVJxNynDEWReXQrKf3QR/3s4jLWl+koPnF8vglp+IGNGthfrPRR;4:W+HLq+YZNMe+RU+3z22zY2afKix/XGlqkLYAUarbdYqaSQf7SuCK5KNbOv+GBl72gkJd9JWBGkZEFASxO8EGvRpDjBP1ZvMhKDqEMb33cv7VPJb3PX1J591hGjGzbwh/Qmu0UxytjRB4yJS6FrMhprTdV4PTkHUuEOf3hcJFbfwmdZt9EOIZZMzIUDAZf2YWc/JlVVyqqIM4ZtfbxCeMZQcE0lyJLNFk5L1+APW4mB1cMLx/pD+Pw0muP56iW71XZRQ5V8l8iC+PLE2tNL6h6KktBK0FLdnEkxeL+yC6LJf+hdNBe8F+BgNUYtZTP383mqG+Kck0ASrIJ0KqhfiUtw== 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)(5005006)(8121501046)(3002001)(3231020)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6055026)(6041248)(20161123562025)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0160;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0160; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(39860400002)(376002)(346002)(199003)(189002)(54906003)(1076002)(6666003)(189998001)(68736007)(8676002)(305945005)(50226002)(7736002)(101416001)(76176999)(8936002)(97736004)(25786009)(81166006)(81156014)(16526018)(6486002)(478600001)(48376002)(2906002)(50466002)(4326008)(47776003)(66066001)(5660300001)(2950100002)(53936002)(106356001)(3846002)(50986999)(16586007)(53416004)(6116002)(5003940100001)(36756003)(33646002)(86362001)(105586002)(316002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0160;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR12MB0160;23:SdjFM5DHQpSX1OPRPASegcZGcxVOlIksZ1bOVxSvs?= =?us-ascii?Q?hwlA0PfMtXYyV1tNV9SsFLuaziLpi2MC0NGkbz/soAvlfAPhwFeTgEMZbuIm?= =?us-ascii?Q?au+F8zQKisNrH47YU7+ed8qknDDEY9UHJD5NYQFSUV8i31fXoDs3VD3HJMYa?= =?us-ascii?Q?wYuNRHiKElVNkKSlmU8U6IZGC6g4ggrWa/ObEx6kVoPhsTXn/XaLGynzFwEe?= =?us-ascii?Q?UusLgFZ/3gf9R/zBy0b397r+O7YmQCItSkNwtKK5z053i9wQVNo9y8XVk3Oq?= =?us-ascii?Q?71iAMEq4G8DCKvqLunnMiJ288JixtoZUD9G+sMlLxIVx1mFawObWry0vTTIG?= =?us-ascii?Q?A9HcZaA52aH1pJv0vVmdQBU644IFcfYIZRnjc7kZ2GMBN9UKPHTPeXULNEp2?= =?us-ascii?Q?ZU4uZZqdxxK1gDRuLyBADaPyrU42wIwMu6yffCy7CuhIuut0SDnrO86oHqYI?= =?us-ascii?Q?TKhDb3/TRSPloRPaq43JxO14nJRIPJEjmlAluOQ1Dq8YZ3UeSgejj41XQqiY?= =?us-ascii?Q?YBgDxiKgO82KFRSOOWUIma93Gw7SCOFW+qJV51aoA964Zpx7TnJ1j4D1KRP9?= =?us-ascii?Q?N+3UvH0M6fFmBr7LxjMME2BHI/ybcu61WMVjAR/tL+lrncxF4u+wSmbUfbil?= =?us-ascii?Q?LjWLNoF+17hSe8KOTdiaLaIwNhcAJ8ivEQ5wEeEYlto5g9+6N1bpQzVX9lMm?= =?us-ascii?Q?ztX4d/Q5HE3I2LdWlvze23XrpO7I+5plj/ZtCY5LgJCTeNW0H+GbrzMpC81z?= =?us-ascii?Q?LU8c1LeCylnAGqCpNXW9atXPyog0NDn4jvJDA/KnLAaW8kL2XHdSTBmYacTN?= =?us-ascii?Q?+K2mJu0Sxs3FBmvnnT8kdBNEd/Lm21UiaPmVTzxXwojEbbqViI8J1MMIgr0k?= =?us-ascii?Q?jfxSRM4QZjAUZSJsoVU8LayLouEGKS6228EMGhWj43U27whvb7Qkmd/Ky6ZH?= =?us-ascii?Q?9fcBau2xHOOfWih4V9mrG6kb1v0g6KgIRESYMt0ggMNFzliMqTT9sbNArHSD?= =?us-ascii?Q?IwMm3zBt7mmpOUPTBK1VB6VyHxrltDNZwS67UQUZYkaLx2fJXuQk6mdHDKE3?= =?us-ascii?Q?tcB3ARbWEEGD+DI1DmEBTJF4NcNDwgRSXi+c4UjLZ2lG90TCA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0160;6:gmG5YbhK3/9VfqX2rkV3yK1SCdUU4B9i4m1HL0fjay7VHSol1YBc7QNH1CEeKGmOlBMM2FJhoAdxB0udyawZVdjFC/0z0nr+6Iu4f4+t1i/UtC+FE8oX+J55ccMTtlOJCII69rU9N2uDACWxvGXwCR3PpuLRW3ZZfrWBoC6teFbRmqvTU85UYZutGyMXKhtIW+xD+68OZ/O8b9IUB0GB/zZ3k0UoGqC0BIGJlt/Oz7ee7GQJSvNOXtAYrTeC/31iZMSBx81yxfp04KM6g3IjtejNLTQPdFb7Rir6jurAc1gELp6aTcfhEugZ8mn9wxxzwdgE/c+EhfML5ZdNsVr6xQ==;5:5WDXN00oqkBmUcJKnFLXAnvzH1A5+61qJXIUe9rHvbRl7CrkneFAGHh55Ih3VRsQUSsDT+lrWubCx+bL98+jYyRLDTLHqrDHUG+rBa5eNmkjOCN9A96s5mXaCkT9THVLKf04L7SbUUv/Ga2VJXtE5Q==;24:/9vitEoqMiSMRjpcPaHOpBAZV5fzX+MhNWcCj53UlTc0t3VDPWiskNKzIM5zNB1s7YNl8nsJo+fX2xJQQoAhUhj3N3Y1bxVgOFYImoOfG0Q=;7:7nEdw4aEjwDbi8pCnD5wMTd+U2Jab/AXwMpqGM22pqx6dOkYvSiQfxusyF9vXyL4eN8u+23exGTT3vlhC0myYKsdJpUyQrVMh8U8B/cxqw5iY/8rZYqlwBQULMze+33bPPHhxy2B003rW4t9ZHYQq4Z5Z0EIts5ilVwY+RI1ag5ADyIwW6SdRnM5KxtUcX6sJ8ElysGTp3ERqns3vQ+HAWyF0Kn/uPsyjPXCiOHQJFM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0160;20:HlpRtFwj3woY6C/SbqySbcnS82BOptX/CnZQdoyO4WBULEuR49RJWVZ/4bzCRVUujM6QhaI1e8JzExq+fFPoBT7l2/H1KJYl560HTYMmv8RVIeuobQQk0qRWBY6sTrp8bYneTJqK77VAdMkar3OHx6d/OAGyT3ZN3KC2oL5iW7V4BDc2A87Tr4W+GfE5MY1wgivtPMkv0KFrfOALU4gQknVezycKo5OYZ7clOu/XdvR3MKRWRqurIjorPqMmP9WZ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 14:31:23.4072 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bec63ab5-9523-4f27-f23f-08d517c73d7c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0160 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. Signed-off-by: Tom Lendacky Signed-off-by: Brijesh Singh Reviewed-by: Borislav Petkov Tested-by: Borislav Petkov Cc: Borislav Petkov Cc: linux-kernel@vger.kernel.org --- 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