After the basic functions of "support reserving crashkernel above 4G on arm64 kdump"(see https://lkml.org/lkml/2022/5/6/428) are implemented, we still have three features to be improved. 1. When crashkernel=X,high is specified but crashkernel=Y,low is not specified, the default crash low memory size is provided. 2. For crashkernel=X without '@offset', if the low memory fails to be allocated, fall back to reserve region from high memory(above DMA zones). 3. If crashkernel=X,high is used, page mapping is performed only for the crash high memory, and block mapping is still used for other linear address spaces. Compared to the previous version: (1) For crashkernel=X[@offset], the memory above 4G is not changed to block mapping, leave it to the next time. (2) The implementation method is modified. Now the implementation is simpler and clearer. Zhen Lei (5): arm64: kdump: Provide default size when crashkernel=Y,low is not specified arm64: kdump: Support crashkernel=X fall back to reserve region above DMA zones arm64: kdump: Remove some redundant checks in map_mem() arm64: kdump: Decide when to reserve crash memory in reserve_crashkernel() arm64: kdump: Don't defer the reservation of crash high memory .../admin-guide/kernel-parameters.txt | 10 +- arch/arm64/mm/init.c | 109 ++++++++++++++++-- arch/arm64/mm/mmu.c | 25 ++-- 3 files changed, 112 insertions(+), 32 deletions(-) -- 2.25.1