Re: [PATCH v20 2/5] arm64: kdump: introduce some macros for crash kernel reservation
flat view
From: Leizhen (ThunderTown) <hidden>
Date: 2022-02-14 06:22:42
Also in:
kexec, linux-devicetree, linux-doc, lkml
On 2022/2/11 18:39, Baoquan He wrote:
On 01/24/22 at 04:47pm, Zhen Lei wrote:quoted
From: Chen Zhou <redacted> Introduce macro CRASH_ALIGN for alignment, macro CRASH_ADDR_LOW_MAX for upper bound of low crash memory, macro CRASH_ADDR_HIGH_MAX for upper bound of high crash memory, use macros instead. Signed-off-by: Chen Zhou <redacted> Signed-off-by: Zhen Lei <redacted> Tested-by: John Donnelly <redacted> Tested-by: Dave Kleikamp <redacted> --- arch/arm64/mm/init.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 90f276d46b93bc6..6c653a2c7cff052 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c@@ -65,6 +65,12 @@ EXPORT_SYMBOL(memstart_addr); phys_addr_t arm64_dma_phys_limit __ro_after_init; #ifdef CONFIG_KEXEC_CORE +/* Current arm64 boot protocol requires 2MB alignment */ +#define CRASH_ALIGN SZ_2M + +#define CRASH_ADDR_LOW_MAX arm64_dma_phys_limit +#define CRASH_ADDR_HIGH_MAX MEMBLOCK_ALLOC_ACCESSIBLEMEMBLOCK_ALLOC_ACCESSIBLE is obvoiously a alloc flag for memblock allocator, I don't think it's appropriate to make HIGH_MAX get its value.
Right, thanks.
You can make it as memblock.current_limit, or do not define it, but using MEMBLOCK_ALLOC_ACCESSIBLE direclty in memblock_phys_alloc_range() with a code comment.
This patch is not required at present. These macros are added to eliminate differences to share code with x86.
quoted
+ /* * reserve_crashkernel() - reserves memory for crash kernel *@@ -75,7 +81,7 @@ phys_addr_t arm64_dma_phys_limit __ro_after_init; static void __init reserve_crashkernel(void) { unsigned long long crash_base, crash_size; - unsigned long long crash_max = arm64_dma_phys_limit; + unsigned long long crash_max = CRASH_ADDR_LOW_MAX; int ret; ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(),@@ -90,8 +96,7 @@ static void __init reserve_crashkernel(void) if (crash_base) crash_max = crash_base + crash_size; - /* Current arm64 boot protocol requires 2MB alignment */ - crash_base = memblock_phys_alloc_range(crash_size, SZ_2M, + crash_base = memblock_phys_alloc_range(crash_size, CRASH_ALIGN, crash_base, crash_max); if (!crash_base) { pr_warn("cannot allocate crashkernel (size:0x%llx)\n",-- 2.25.1.
-- Regards, Zhen Lei _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel