From patchwork Fri Oct 20 14:30:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10020405 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D6E8160211 for ; Fri, 20 Oct 2017 14:37:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BEBB928E19 for ; Fri, 20 Oct 2017 14:37:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B345528E78; Fri, 20 Oct 2017 14:37:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4953928E19 for ; Fri, 20 Oct 2017 14:37:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752576AbdJTOhC (ORCPT ); Fri, 20 Oct 2017 10:37:02 -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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=lrf7wa/J6T82eMwJk4aOWopkV4CNap+sB8rSKq8hLtk=; b=xXhnrv3QcHzVl6VIcqoperoiCQZl698i7Bj8/VBp3LRtV81uu7Ael3fdXR3NrD7OROv4qg2PRc0SPMJBV9jn8xjXLP/hTybiQPDTx1tpi3gMzTKV9AIftSDTb6o+11p7vJ1DlL5u6rMTp5WXXmtJAA9sK3vELzC5wl8k8KYMoes= Received: from ubuntu-010236106000.amd.com (165.204.78.1) by SN1PR12MB0160.namprd12.prod.outlook.com (10.162.3.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.4; Fri, 20 Oct 2017 14:31:23 +0000 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 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; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) 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: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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.