From: "Pratyush Yadav (Google)" <[email protected]>

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) <[email protected]>
Signed-off-by: Jork Loeser <[email protected]>
---
 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


Reply via email to