diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index f22faea1afae837a39d1d643a35041776a014248..dfb89b7f8d37b055dfe5145ab799e08b1510ab2b 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -590,16 +590,25 @@ void __init arm64_memblock_init(void) else arm64_dma32_phys_limit = PHYS_MASK + 1; + /* + * Reserve park memory before crashkernel and quick kexec. + * Because park memory must be specified by address, but + * crashkernel and quickkexec may be specified by memory length, + * then find one sutiable memory region to reserve. + * + * So reserve park memory firstly is better, but it may cause + * crashkernel or quickkexec reserving failed. + */ +#ifdef CONFIG_ARM64_CPU_PARK + reserve_park_mem(); +#endif + reserve_crashkernel(); #ifdef CONFIG_QUICK_KEXEC reserve_quick_kexec(); #endif -#ifdef CONFIG_ARM64_CPU_PARK - reserve_park_mem(); -#endif - reserve_pin_memory_res(); reserve_elfcorehdr();