arm64: Use insert_resource() to simplify code
authorZhen Lei <thunder.leizhen@huawei.com>
Fri, 6 May 2022 11:43:58 +0000 (19:43 +0800)
committerCatalin Marinas <catalin.marinas@arm.com>
Sat, 7 May 2022 18:54:33 +0000 (19:54 +0100)
insert_resource() traverses the subtree layer by layer from the root node
until a proper location is found. Compared with request_resource(), the
parent node does not need to be determined in advance.

In addition, move the insertion of node 'crashk_res' into function
reserve_crashkernel() to make the associated code close together.

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
Acked-by: John Donnelly <john.p.donnelly@oracle.com>
Acked-by: Baoquan He <bhe@redhat.com>
Link: https://lore.kernel.org/r/20220506114402.365-3-thunder.leizhen@huawei.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/setup.c
arch/arm64/mm/init.c

index 3505789cf4bd92aaa4ac011cedc202cb866bbf27..fea3223704b6339a0381ddee334168ec5d83201b 100644 (file)
@@ -225,6 +225,8 @@ static void __init request_standard_resources(void)
        kernel_code.end     = __pa_symbol(__init_begin - 1);
        kernel_data.start   = __pa_symbol(_sdata);
        kernel_data.end     = __pa_symbol(_end - 1);
+       insert_resource(&iomem_resource, &kernel_code);
+       insert_resource(&iomem_resource, &kernel_data);
 
        num_standard_resources = memblock.memory.cnt;
        res_size = num_standard_resources * sizeof(*standard_resources);
@@ -246,20 +248,7 @@ static void __init request_standard_resources(void)
                        res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
                }
 
-               request_resource(&iomem_resource, res);
-
-               if (kernel_code.start >= res->start &&
-                   kernel_code.end <= res->end)
-                       request_resource(res, &kernel_code);
-               if (kernel_data.start >= res->start &&
-                   kernel_data.end <= res->end)
-                       request_resource(res, &kernel_data);
-#ifdef CONFIG_KEXEC_CORE
-               /* Userspace will find "Crash kernel" region in /proc/iomem. */
-               if (crashk_res.end && crashk_res.start >= res->start &&
-                   crashk_res.end <= res->end)
-                       request_resource(res, &crashk_res);
-#endif
+               insert_resource(&iomem_resource, res);
        }
 }
 
index 1e7b1550e2fcebbea89f1443cb8daa5f009b4498..51863f1448c6989d2ca6f944f79f9386a2e5ef83 100644 (file)
@@ -137,6 +137,7 @@ static void __init reserve_crashkernel(void)
        kmemleak_ignore_phys(crash_base);
        crashk_res.start = crash_base;
        crashk_res.end = crash_base + crash_size - 1;
+       insert_resource(&iomem_resource, &crashk_res);
 }
 
 /*