From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0772F1E260C; Thu, 28 May 2026 00:42:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779928955; cv=none; b=DGFYjs0mq20YZTaVbezgCBzci2tA/PRFZi/6dWG/y3iaf84svq4RF+knILjwzT67T1J6VOAizJEhW8z17Q6LLsd7PLFGptJM8vX4GYsJY/xWU0/V6B+se0wyHxo5l82X2h03Zi7HawiEWGHd26nkDKRaODZMznDvtD+WAGZf+dE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779928955; c=relaxed/simple; bh=pWi431/n5A5XMi0S5icnmYkcnDsmlDGS0CaZXhYMLz4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gdC2Z8sngM2tq6F5X0IQVq7e0oA7a13fgZB1X6eDL0HNwvvsTQita3ziea9B4ESBNQv+Zxnm9JfeLXqcLAkBGcc77rShm2H5DF0nkj6VpDpWzX4c+cQk2qAUvINE1ARBHBp7nGgEKYH9K/bmFZBgSCMq9h107lpoD5/1FmXGVzc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=TVD5iDMu; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="TVD5iDMu" Received: by linux.microsoft.com (Postfix, from userid 1241) id 64DB520B716C; Wed, 27 May 2026 17:42:19 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 64DB520B716C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1779928939; bh=Cj1bXneZ/55tRiLo5BAzxpY6ql7Nf0vxqaPwBTnufbI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TVD5iDMuv1UMsOEX1EG/iFjlf91oQMKN2LoYjUOo5nEjdyljMNqJgNV7wWGJ/8Qo6 5jP/DnRsCNWlUzVNF0PNicBBpFHThFLyoOnlrxBrSEzFz7uMGjvNku8H40fMJG2Hjp BTlo58HNqDBNYl99jnK6sq2MEYieIsoPsIEgiGk8= From: Jork Loeser To: linux-hyperv@vger.kernel.org, linux-mm@kvack.org, kexec@lists.infradead.org Cc: "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Long Li , Mike Rapoport , Pasha Tatashin , Pratyush Yadav , Alexander Graf , Jason Miu , Andrew Morton , David Hildenbrand , Muchun Song , Oscar Salvador , Baoquan He , Catalin Marinas , Will Deacon , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Kees Cook , Ran Xiaokai , Justinien Bouron , Sourabh Jain , Pingfan Liu , "Rafael J. Wysocki" , Mario Limonciello , linux-arm-kernel@lists.infradead.org, x86@kernel.org, linux-kernel@vger.kernel.org, Michael Kelley , Jork Loeser Subject: [RFC PATCH 11/20] kho: return virtual address of mem_map Date: Wed, 27 May 2026 17:41:53 -0700 Message-ID: <20260528004204.1484584-12-jloeser@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260528004204.1484584-1-jloeser@linux.microsoft.com> References: <20260528004204.1484584-1-jloeser@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-hyperv@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: "Pratyush Yadav (Google)" There are currently 3 callers of kho_get_mem_map_phys(). Two of them, kho_mem_retrieve() and kho_extend_scratch() need the virtual address. The third, kho_populate() doesn't care. Make things simpler by directly returning the virtual address. Rename kho_get_mem_map_phys() to kho_get_mem_map() to accurately reflect what it returns. Signed-off-by: Pratyush Yadav (Google) Signed-off-by: Jork Loeser --- kernel/liveupdate/kexec_handover.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c index a006a883ee94..797ec285b698 100644 --- a/kernel/liveupdate/kexec_handover.c +++ b/kernel/liveupdate/kexec_handover.c @@ -610,10 +610,11 @@ static int __init kho_preserved_memory_reserve(unsigned long key, void *data) return 0; } -/* Returns physical address of the preserved memory map from FDT */ -static phys_addr_t __init kho_get_mem_map_phys(const void *fdt) +/* Returns virtual address of the preserved memory map from FDT */ +static __init void *kho_get_mem_map(const void *fdt) { const void *mem_ptr; + phys_addr_t mem_map_phys; int len; mem_ptr = fdt_getprop(fdt, 0, KHO_FDT_MEMORY_MAP_PROP_NAME, &len); @@ -622,7 +623,11 @@ static phys_addr_t __init kho_get_mem_map_phys(const void *fdt) return 0; } - return get_unaligned((const u64 *)mem_ptr); + mem_map_phys = get_unaligned((const u64 *)mem_ptr); + if (!mem_map_phys) + return NULL; + + return phys_to_virt(mem_map_phys); } /* @@ -917,15 +922,15 @@ void __init kho_extend_scratch(void) .key = kho_ext_mark_scratch, }; struct kho_radix_tree radix; - phys_addr_t prev_end = 0, mem_map_phys; + phys_addr_t prev_end = 0; int err = 0; if (!is_kho_boot()) return; /* Make sure the KHO radix tree is initialized. */ - mem_map_phys = kho_get_mem_map_phys(kho_get_fdt()); - err = kho_radix_init_tree(&kho_in.radix_tree, phys_to_virt(mem_map_phys)); + err = kho_radix_init_tree(&kho_in.radix_tree, + kho_get_mem_map(kho_get_fdt())); if (err) goto print; @@ -1609,11 +1614,9 @@ static int __init kho_mem_retrieve(const void *fdt) const struct kho_radix_walk_cb cb = { .key = kho_preserved_memory_reserve, }; - phys_addr_t mem_map_phys; int err; - mem_map_phys = kho_get_mem_map_phys(fdt); - err = kho_radix_init_tree(&kho_in.radix_tree, phys_to_virt(mem_map_phys)); + err = kho_radix_init_tree(&kho_in.radix_tree, kho_get_mem_map(fdt)); if (err) return err; @@ -1838,8 +1841,7 @@ void __init kho_populate(phys_addr_t fdt_phys, u64 fdt_len, { unsigned int scratch_cnt = scratch_len / sizeof(*kho_scratch); struct kho_scratch *scratch = NULL; - phys_addr_t mem_map_phys; - void *fdt = NULL; + void *fdt = NULL, *mem_map; bool populated = false; int err; @@ -1862,8 +1864,8 @@ void __init kho_populate(phys_addr_t fdt_phys, u64 fdt_len, goto unmap_fdt; } - mem_map_phys = kho_get_mem_map_phys(fdt); - if (!mem_map_phys) + mem_map = kho_get_mem_map(fdt); + if (!mem_map) goto unmap_fdt; scratch = early_memremap(scratch_phys, scratch_len); -- 2.43.0