Message ID | 20220613080932.663-4-thunder.leizhen@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: kdump: Function supplement and performance optimization | expand |
On 06/13/22 at 04:09pm, Zhen Lei wrote: > arm64_memblock_init() > if (!IS_ENABLED(CONFIG_ZONE_DMA/DMA32)) > reserve_crashkernel() > //initialize crashk_res when > //"crashkernel=" is correctly specified > paging_init() > map_mem() > > As shown in the above pseudo code, the crashk_res.end can only be > initialized to non-zero when both "!IS_ENABLED(CONFIG_ZONE_DMA/DMA32)" > and crash_mem_map are true. So some checks in map_mem() can be adjusted > or optimized. LGTM, Acked-by: Baoquan He <bhe@redhat.com> > > Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> > --- > arch/arm64/mm/mmu.c | 25 +++++++++++-------------- > 1 file changed, 11 insertions(+), 14 deletions(-) > > diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c > index 626ec32873c6c36..6028a5757e4eae2 100644 > --- a/arch/arm64/mm/mmu.c > +++ b/arch/arm64/mm/mmu.c > @@ -529,12 +529,12 @@ static void __init map_mem(pgd_t *pgdp) > > #ifdef CONFIG_KEXEC_CORE > if (crash_mem_map) { > - if (IS_ENABLED(CONFIG_ZONE_DMA) || > - IS_ENABLED(CONFIG_ZONE_DMA32)) > - flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; > - else if (crashk_res.end) > + if (crashk_res.end) > memblock_mark_nomap(crashk_res.start, > resource_size(&crashk_res)); > + else if (IS_ENABLED(CONFIG_ZONE_DMA) || > + IS_ENABLED(CONFIG_ZONE_DMA32)) > + flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; > } > #endif > > @@ -571,16 +571,13 @@ static void __init map_mem(pgd_t *pgdp) > * through /sys/kernel/kexec_crash_size interface. > */ > #ifdef CONFIG_KEXEC_CORE > - if (crash_mem_map && > - !IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32)) { > - if (crashk_res.end) { > - __map_memblock(pgdp, crashk_res.start, > - crashk_res.end + 1, > - PAGE_KERNEL, > - NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS); > - memblock_clear_nomap(crashk_res.start, > - resource_size(&crashk_res)); > - } > + if (crashk_res.end) { > + __map_memblock(pgdp, crashk_res.start, > + crashk_res.end + 1, > + PAGE_KERNEL, > + NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS); > + memblock_clear_nomap(crashk_res.start, > + resource_size(&crashk_res)); > } > #endif > } > -- > 2.25.1 >
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 626ec32873c6c36..6028a5757e4eae2 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -529,12 +529,12 @@ static void __init map_mem(pgd_t *pgdp) #ifdef CONFIG_KEXEC_CORE if (crash_mem_map) { - if (IS_ENABLED(CONFIG_ZONE_DMA) || - IS_ENABLED(CONFIG_ZONE_DMA32)) - flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; - else if (crashk_res.end) + if (crashk_res.end) memblock_mark_nomap(crashk_res.start, resource_size(&crashk_res)); + else if (IS_ENABLED(CONFIG_ZONE_DMA) || + IS_ENABLED(CONFIG_ZONE_DMA32)) + flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; } #endif @@ -571,16 +571,13 @@ static void __init map_mem(pgd_t *pgdp) * through /sys/kernel/kexec_crash_size interface. */ #ifdef CONFIG_KEXEC_CORE - if (crash_mem_map && - !IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32)) { - if (crashk_res.end) { - __map_memblock(pgdp, crashk_res.start, - crashk_res.end + 1, - PAGE_KERNEL, - NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS); - memblock_clear_nomap(crashk_res.start, - resource_size(&crashk_res)); - } + if (crashk_res.end) { + __map_memblock(pgdp, crashk_res.start, + crashk_res.end + 1, + PAGE_KERNEL, + NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS); + memblock_clear_nomap(crashk_res.start, + resource_size(&crashk_res)); } #endif }
arm64_memblock_init() if (!IS_ENABLED(CONFIG_ZONE_DMA/DMA32)) reserve_crashkernel() //initialize crashk_res when //"crashkernel=" is correctly specified paging_init() map_mem() As shown in the above pseudo code, the crashk_res.end can only be initialized to non-zero when both "!IS_ENABLED(CONFIG_ZONE_DMA/DMA32)" and crash_mem_map are true. So some checks in map_mem() can be adjusted or optimized. Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> --- arch/arm64/mm/mmu.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-)