From patchwork Fri Oct 20 14:30:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 828693 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yJSw63NFxz9t38 for ; Sat, 21 Oct 2017 01:33:42 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="4XwlbehD"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3yJSw625y5zDqXt for ; Sat, 21 Oct 2017 01:33:42 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="4XwlbehD"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (helo) smtp.helo=nam03-dm3-obe.outbound.protection.outlook.com (client-ip=104.47.41.89; helo=nam03-dm3-obe.outbound.protection.outlook.com; envelope-from=brijesh.singh@amd.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="4XwlbehD"; dkim-atps=neutral Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0089.outbound.protection.outlook.com [104.47.41.89]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3yJSsc0XcwzDq5W for ; Sat, 21 Oct 2017 01:31:31 +1100 (AEDT) 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=fzd8J3tLKSoxdPhAiYjhNz33hxizcS3jZSHyEwcT4/E=; b=4XwlbehD8/w7d70YwOtVlMvm6H2mydRILF1GjA6pxlZzr/F3Iq7NG4rWqJW8s6VrdCKkl4GI7YjODVuEGf3sS4b0+L1EIvsB7rDdaX73oEEVMY+0Vxvu/orGmWpQeAtQSEOV9s7k775vKAbeNBydUZ9E1alo2zrUyoVXJCkFCrc= 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:24 +0000 From: Brijesh Singh To: x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [Part1 PATCH v7 09/17] resource: Provide resource struct in resource walk callback Date: Fri, 20 Oct 2017 09:30:51 -0500 Message-Id: <20171020143059.3291-10-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: 8be5c012-0cd4-4704-84cc-08d517c73e53 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:TC5E/YlYygR6J4jMzbVWp2rg9TIOl3Cbj+qvo6AWLpnJ63dKGEgfNdWhOq4ikhyo9tm0t+r4FBdzyJfhYS1cmcH7wD85yaaqThhDVWbqEUhdwjYDPu0zgT2BLhOCExa0PmtByf1AeurjX4Pt2FzKpgNZ7XPOACrN5MFmwsDmascnVOIstGTOOOzZd0vi/YesSnsji9g39fxVSHQ23W+B3lBJXao+IsVVigB01onChgOf3UDLcphRtSr2D1U1tAYB; 25:of5OhEED+4zdWKgHSiOWWPiJk9YmPa6vYEqs92/x8kUWuKvVKQgEe/7ZXocsq3kq6BFW0rjHQV02ES5KPyXwtyECMt2UmBfjMZ8dPpki0R8ALYELShridwnPbRjJIS0tVbfG44NJuO5kkClYmAywX9x/Z8T7e0Bythy8ZPVPYYwuyxjfFD0z7f2ULURHBk0XDT2/BDRwoK0ByM7otdYYvHxlnmCBV4c+KyNF19rtTzpE/wI6QW4xK7+XoNudKvoxO2zUiMh5G0kxOvat/FoF+cxtIkjScjWyFzjBo+VqvDcu3pvEDfLOVGne8axH6DrzFg5iafoY+InzHUpuESmMPA==; 31:ZpE0YdNmcg45VJ8eGjZ0qWr/odAI9+5wpWgnkv3SjGWlNa5VxLduS7wK+ug/XThYbFN2t25KYcr9Goj83GVxYVR3jjyzGWu1YBu07+UOopbNV2pnBzylfWi9gjXdebZkgcPjb/FEwsBXZBcz2mDprho8USvMEbBTdPX8B7XyQghEGziCnRDObA+r7LYoE5u69qQeUYAGy9gdMWFHjZjaXsXi6XPn5ZTWVCD7Go3fK+A= X-MS-TrafficTypeDiagnostic: SN1PR12MB0160: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0160; 20:/pWrfPfdZAWXZcIpXq24wG0lyOU3UVbS4WdQmRnKogba7H+3iFser0JKOTzPrhP9JAgOEBJm5AE+/lkEiJia5n0Lgc/6JLo39SNrY/YKJMgJ/9QmMzUkAg0q/3EaoJ+uwlORY1aGGsSLUGcJbTzaBmAYqq9jq8Glzg6wPSOzV+W+WrrJzLXL5LKccudXx2opSxdCmJKic5XbY+8Lf2dfns3IPK+oMhC8exdgPTlgbOD5g9GRVoFSmnqfGCJWbHQy1gWrUq1d0xTbCu6FaItIMLz9TyaiaXQW6bVuWE3IOnyNmKPdniXmdDKVdwiYFVlQ8AiGS/Y4cTutyQBhiq0yiwxnoPsNZC0R24M1mAOyrWbmsDhLnl8Vdnj529i+gPT4AOHtTdeYXRE4u0XQUSdgRaWl+2FUaLXynIMFMmerDJ3ApCqCnAFxc3oQakly/KfNJVrNroBvEbKX9ufMfUYUZ55MYFZjDEOhK2ojKWwucr9lQkGlAFyFSiZrmaF7LtXY; 4:pFZPZ+u3YgqdBvOXK2D79uP6k9ijymBl7WGzuJuro2A1mo0S2MPoiluW0NG2l2yfEhFaedqsc5hsLNDkoPMdyHjOoUyE8tS/QaBTtJ3HxzG+qsDgoDxOA2I6LPpw5a0m00k7AEd6x0FFpR6D0LSWa4eTaXSVyFa57bLmH83Fy96ft21rv3d+TN+Cw8YYBw2Nh63xRiO8hb6HB2VN/UHEc5f7HuKqHV7DUQv1gz4rKeya0zA0iOKtpp7nrbrpQi1cwOBRTQrlRi9V1z8H7H9nwakGx47EoSc97U5Ezau0JURxcZKjriLA7Qgz10QrgZBmtwD+3B9p8qpjjcf0Zv+e5QZWw+3fWI2ONX0GW4M/WQc= X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(65623756079841)(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)(7416002)(47776003)(66066001)(5660300001)(2950100002)(53936002)(106356001)(3846002)(50986999)(16586007)(53416004)(6116002)(5003940100001)(36756003)(33646002)(86362001)(575784001)(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:A0TnNGDv5EafT/jMsN55bqJrnf2UOnpn/y5+XR0WQ?= YjYNdtfNq/oRCvkQZdaK1b90QFRuY+QjElofj5o66KnuXSal3hcnlXAcp4R43I1aCIrZelNa8HZ7gtSSsc56DzTE+I2fYyQ9go15Xb41uljgaxIK/R80ihcqdyciERrxCD4LEpIfvCRVubs+r/HhMuqKqndckAjliTZ/mGjgJgICEvhzKmTA0LMz++vFdTtjakx62SX8sUbcVolgrZtBlTj6NATSgU8BlXAx4YceK7YtJBBR77bIZdef+fvCCr8GItNc1t7I9q9mjQWd3ovTyjrzbcgD7x3t0bsS7sFv/0YNupZh5MjJzXXmJvStj/r2MngIm2iASxduGcXE/koGMLhXIuHpqK36Jnb2zqMlS4obgH61zTI9bQ/JpEgS6Cjkc7oR3eSaVM7c5wOy1C2FxuP+ljE7AW3C+pT/0p3JmMaSviImB3uKfz8eVuDlzNBsrxrhyLIkURsaa8RpJYQ8Lffdq517WXsw8ZlFaI2BsWoUkWNL0+bezNgEVNJHXKxBoBmOUx/OsfoqMw4sL26x2ZB+/FC28lchNpZlAOe2SgZqjmKeMwSF7C1GiZ4Kp7WR9Tu6aTjUkdMB6ON9EUqqhlRAA4nJwV2TIlmFirZrvXRWG2URbg6B9yP09hotudwebP1z4wk8+//6pIRDJQcl1suu1aWSb9ICBahrRQtzFKctE4Bk4JTZulJnKHESMdqROqhbvluESX8hRSI4wvByYGGdug3d0T3gQjo6OzWHgvUa3/eWTiap+iZY/xodCnDOFz5cVu3QnDBP0+6EDi1OiQ21rDU3uBXIEufkBf+UqAuz7nc8VGMT9I76Z5zqu6cWfoAPi4a3TJI6bF/aYKywhIIxsBAjU0ePQDteP+JOpNTpdLTs6nW4AW8yt8jAB2QyGnxKaIPARtdWBoReoDiBIZS0g4oj1Ky1kCU2Xk8F7p5BN3ehQh0qk3VTC+AaV7yCc4k+1Ts8Gb4XV1pMkj0cBk4fHcNoqTFe4RH3xVibTElQWukQK17IhlaUbTkvJVHS5UNHwssuabfrv74o9/RxQ8AgO+qXBQA0DvV0K2NDKZVEibTj2M7PsVkmOGkPHJkzxAx/xWMTPNIQCqN9hGr32D7 X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0160; 6:sVbiANDASukg8S/VefSJ4eXUBFRpK0EF8oK6lYnMKcCAswp5zKkpYYs3Iqb3Oq5bZvGOtGGddRdGBHtNBobIEi8tA+tGKTo1Bmws8a92YsunP7+opo7vPhoLCpww69ar86AzaFUQ6o1FPNJ4K0FlN05Qa+WcBo9JVKcsHOaLlvV2ZPlztYVcXWyvVBk2CExNBUc314K8kmDd+qYxD8QYxKwKQlWY/mLDAkubfsLY0haP+vsYnjsTNlf/1gb9Y34OupWLaBC03Fw4dpOiE0QjswWNnUxv+dejOYXsUsHLTi4DlJ7z8StWECXfaEZ+tugPHqQSulvMEihD1DV8O9Afbw==; 5:fSbqKtfBxvJMjqiMlUSm2OQqF5EMNHxalsWsMm182WIwxMIbqi+OAmgP/+gPhipQEWFA4faHMQziF9JC+lR+VpfdG0Xa0DP8L2NBjXeIuCxkS1CEOzIX83nOrpVqXdVKIzDzWeZIPEgzmcD+p3Av1Q==; 24:7W7e3J1G6INlDVfircKsiq/AmIIFkzeRe1PtEATS8nwQkSx5PHdtX34V7tRdfcv2NLyg/cvexiKFaq0d+eAwC6DZGHbRAA+lgCujCxcOAWU=; 7:EAupZ98xUNgfKVMB6984ap21WC8AAv8PlOyN2kvw1LnIY2b/lwXZu482XhVjNeCYOo9jvhoBtJNkcebkpz+MCe2lGhe8cpwptJKoEvNJEMAxAB9xKADCL07kd3vqxj2q73Nz3WQM7qZrKSjG+oPnkRnH2M6uVaoXQBeAKc4PWvhxWZojvnm4Z8DvJh5foI+WzoiBViO234N4tlEa98U366AIuW3H/4Lk8RPH4Rl96gs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0160; 20:W8dR8MCMcYvcXrcJi72dgQ6s1gW3vxCLDsTTGnumBvehliaEOY2hjxSDp4YYE0X2ZpO5c3My4nu7caI4pEt+g/g+bkfagrfrtrMeNLeBXxvuOlml2gUxB1Ee4Lz3hfIPm2C7DhKtX7MVATh/YsXcrKWgFO2RPEaID4hN6hDtDeMCjw0IoISsBFj+YuAMnYytPVkQG6bYLvc5h9Td8CACtP4IESMa0sJ9hMf9Efvwb6z4xxUc1F6cjo5vPDCIc1x5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 14:31:24.3603 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8be5c012-0cd4-4704-84cc-08d517c73e53 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0160 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.24 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Lendacky , Brijesh Singh , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Thomas Gleixner , Borislav Petkov , linuxppc-dev@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: Tom Lendacky In prep for a new function that will need additional resource information during the resource walk, update the resource walk callback to pass the resource structure. Since the current callback start and end arguments are pulled from the resource structure, the callback functions can obtain them from the resource structure directly. Signed-off-by: Tom Lendacky Signed-off-by: Brijesh Singh Reviewed-by: Kees Cook Reviewed-by: Borislav Petkov Tested-by: Borislav Petkov Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Borislav Petkov Cc: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: Benjamin Herrenschmidt --- arch/powerpc/kernel/machine_kexec_file_64.c | 12 +++++++++--- arch/x86/kernel/crash.c | 18 +++++++++--------- arch/x86/kernel/pmem.c | 2 +- include/linux/ioport.h | 4 ++-- include/linux/kexec.h | 2 +- kernel/kexec_file.c | 5 +++-- kernel/resource.c | 9 +++++---- 7 files changed, 30 insertions(+), 22 deletions(-) diff --git a/arch/powerpc/kernel/machine_kexec_file_64.c b/arch/powerpc/kernel/machine_kexec_file_64.c index 992c0d258e5d..e4395f937d63 100644 --- a/arch/powerpc/kernel/machine_kexec_file_64.c +++ b/arch/powerpc/kernel/machine_kexec_file_64.c @@ -91,11 +91,13 @@ int arch_kimage_file_post_load_cleanup(struct kimage *image) * and that value will be returned. If all free regions are visited without * func returning non-zero, then zero will be returned. */ -int arch_kexec_walk_mem(struct kexec_buf *kbuf, int (*func)(u64, u64, void *)) +int arch_kexec_walk_mem(struct kexec_buf *kbuf, + int (*func)(struct resource *, void *)) { int ret = 0; u64 i; phys_addr_t mstart, mend; + struct resource res = { }; if (kbuf->top_down) { for_each_free_mem_range_reverse(i, NUMA_NO_NODE, 0, @@ -105,7 +107,9 @@ int arch_kexec_walk_mem(struct kexec_buf *kbuf, int (*func)(u64, u64, void *)) * range while in kexec, end points to the last byte * in the range. */ - ret = func(mstart, mend - 1, kbuf); + res.start = mstart; + res.end = mend - 1; + ret = func(&res, kbuf); if (ret) break; } @@ -117,7 +121,9 @@ int arch_kexec_walk_mem(struct kexec_buf *kbuf, int (*func)(u64, u64, void *)) * range while in kexec, end points to the last byte * in the range. */ - ret = func(mstart, mend - 1, kbuf); + res.start = mstart; + res.end = mend - 1; + ret = func(&res, kbuf); if (ret) break; } diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c index 44404e2307bb..815008c9ca18 100644 --- a/arch/x86/kernel/crash.c +++ b/arch/x86/kernel/crash.c @@ -209,7 +209,7 @@ void native_machine_crash_shutdown(struct pt_regs *regs) } #ifdef CONFIG_KEXEC_FILE -static int get_nr_ram_ranges_callback(u64 start, u64 end, void *arg) +static int get_nr_ram_ranges_callback(struct resource *res, void *arg) { unsigned int *nr_ranges = arg; @@ -342,7 +342,7 @@ static int elf_header_exclude_ranges(struct crash_elf_data *ced, return ret; } -static int prepare_elf64_ram_headers_callback(u64 start, u64 end, void *arg) +static int prepare_elf64_ram_headers_callback(struct resource *res, void *arg) { struct crash_elf_data *ced = arg; Elf64_Ehdr *ehdr; @@ -355,7 +355,7 @@ static int prepare_elf64_ram_headers_callback(u64 start, u64 end, void *arg) ehdr = ced->ehdr; /* Exclude unwanted mem ranges */ - ret = elf_header_exclude_ranges(ced, start, end); + ret = elf_header_exclude_ranges(ced, res->start, res->end); if (ret) return ret; @@ -518,14 +518,14 @@ static int add_e820_entry(struct boot_params *params, struct e820_entry *entry) return 0; } -static int memmap_entry_callback(u64 start, u64 end, void *arg) +static int memmap_entry_callback(struct resource *res, void *arg) { struct crash_memmap_data *cmd = arg; struct boot_params *params = cmd->params; struct e820_entry ei; - ei.addr = start; - ei.size = end - start + 1; + ei.addr = res->start; + ei.size = res->end - res->start + 1; ei.type = cmd->type; add_e820_entry(params, &ei); @@ -619,12 +619,12 @@ int crash_setup_memmap_entries(struct kimage *image, struct boot_params *params) return ret; } -static int determine_backup_region(u64 start, u64 end, void *arg) +static int determine_backup_region(struct resource *res, void *arg) { struct kimage *image = arg; - image->arch.backup_src_start = start; - image->arch.backup_src_sz = end - start + 1; + image->arch.backup_src_start = res->start; + image->arch.backup_src_sz = res->end - res->start + 1; /* Expecting only one range for backup region */ return 1; diff --git a/arch/x86/kernel/pmem.c b/arch/x86/kernel/pmem.c index 0c5315d322c8..297bb71f10c5 100644 --- a/arch/x86/kernel/pmem.c +++ b/arch/x86/kernel/pmem.c @@ -6,7 +6,7 @@ #include #include -static int found(u64 start, u64 end, void *data) +static int found(struct resource *res, void *data) { return 1; } diff --git a/include/linux/ioport.h b/include/linux/ioport.h index f5cf32e80041..617d8a2aac67 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -271,10 +271,10 @@ walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages, void *arg, int (*func)(unsigned long, unsigned long, void *)); extern int walk_system_ram_res(u64 start, u64 end, void *arg, - int (*func)(u64, u64, void *)); + int (*func)(struct resource *, void *)); extern int walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, u64 end, - void *arg, int (*func)(u64, u64, void *)); + void *arg, int (*func)(struct resource *, void *)); /* True if any part of r1 overlaps r2 */ static inline bool resource_overlaps(struct resource *r1, struct resource *r2) diff --git a/include/linux/kexec.h b/include/linux/kexec.h index 2b7590f5483a..d672f955100a 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h @@ -159,7 +159,7 @@ struct kexec_buf { }; int __weak arch_kexec_walk_mem(struct kexec_buf *kbuf, - int (*func)(u64, u64, void *)); + int (*func)(struct resource *, void *)); extern int kexec_add_buffer(struct kexec_buf *kbuf); int kexec_locate_mem_hole(struct kexec_buf *kbuf); #endif /* CONFIG_KEXEC_FILE */ diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index 9f48f4412297..e5bcd94c1efb 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -406,9 +406,10 @@ static int locate_mem_hole_bottom_up(unsigned long start, unsigned long end, return 1; } -static int locate_mem_hole_callback(u64 start, u64 end, void *arg) +static int locate_mem_hole_callback(struct resource *res, void *arg) { struct kexec_buf *kbuf = (struct kexec_buf *)arg; + u64 start = res->start, end = res->end; unsigned long sz = end - start + 1; /* Returning 0 will take to next memory range */ @@ -437,7 +438,7 @@ static int locate_mem_hole_callback(u64 start, u64 end, void *arg) * func returning non-zero, then zero will be returned. */ int __weak arch_kexec_walk_mem(struct kexec_buf *kbuf, - int (*func)(u64, u64, void *)) + int (*func)(struct resource *, void *)) { if (kbuf->image->type == KEXEC_TYPE_CRASH) return walk_iomem_res_desc(crashk_res.desc, diff --git a/kernel/resource.c b/kernel/resource.c index 7323c1b636cd..8430042fa77b 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -402,14 +402,15 @@ static int find_next_iomem_res(struct resource *res, unsigned long desc, static int __walk_iomem_res_desc(struct resource *res, unsigned long desc, bool first_level_children_only, - void *arg, int (*func)(u64, u64, void *)) + void *arg, + int (*func)(struct resource *, 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); + ret = (*func)(res, arg); if (ret) break; @@ -435,7 +436,7 @@ static int __walk_iomem_res_desc(struct resource *res, unsigned long desc, * and set it in 'desc' of a target resource entry. */ int walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, - u64 end, void *arg, int (*func)(u64, u64, void *)) + u64 end, void *arg, int (*func)(struct resource *, void *)) { struct resource res; @@ -454,7 +455,7 @@ int walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, * ranges. */ int walk_system_ram_res(u64 start, u64 end, void *arg, - int (*func)(u64, u64, void *)) + int (*func)(struct resource *, void *)) { struct resource res;