Commit e6b39442 authored by Zhen Lei's avatar Zhen Lei Committed by Catalin Marinas

arm64: Use insert_resource() to simplify code

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: default avatarZhen Lei <thunder.leizhen@huawei.com>
Acked-by: default avatarJohn Donnelly  <john.p.donnelly@oracle.com>
Acked-by: default avatarBaoquan He <bhe@redhat.com>
Link: https://lore.kernel.org/r/20220506114402.365-3-thunder.leizhen@huawei.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 2e5920bb
...@@ -225,6 +225,8 @@ static void __init request_standard_resources(void) ...@@ -225,6 +225,8 @@ static void __init request_standard_resources(void)
kernel_code.end = __pa_symbol(__init_begin - 1); kernel_code.end = __pa_symbol(__init_begin - 1);
kernel_data.start = __pa_symbol(_sdata); kernel_data.start = __pa_symbol(_sdata);
kernel_data.end = __pa_symbol(_end - 1); 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; num_standard_resources = memblock.memory.cnt;
res_size = num_standard_resources * sizeof(*standard_resources); res_size = num_standard_resources * sizeof(*standard_resources);
...@@ -246,20 +248,7 @@ static void __init request_standard_resources(void) ...@@ -246,20 +248,7 @@ static void __init request_standard_resources(void)
res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1; res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
} }
request_resource(&iomem_resource, res); insert_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
} }
} }
......
...@@ -137,6 +137,7 @@ static void __init reserve_crashkernel(void) ...@@ -137,6 +137,7 @@ static void __init reserve_crashkernel(void)
kmemleak_ignore_phys(crash_base); kmemleak_ignore_phys(crash_base);
crashk_res.start = crash_base; crashk_res.start = crash_base;
crashk_res.end = crash_base + crash_size - 1; crashk_res.end = crash_base + crash_size - 1;
insert_resource(&iomem_resource, &crashk_res);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment