On 2021/12/10 14:55, Zhen Lei wrote:
There are following issues in arm64 kdump: 1. We use crashkernel=X to reserve crashkernel below 4G, which will fail when there is no enough low memory. 2. If reserving crashkernel above 4G, in this case, crash dump kernel will boot failure because there is no low memory available for allocation. To solve these issues, change the behavior of crashkernel=X. crashkernel=X tries low allocation in DMA zone and fall back to high allocation if it fails. We can also use "crashkernel=X,high" to select a high region above DMA zone, which also tries to allocate at least 256M low memory in DMA zone automatically and "crashkernel=Y,low" can be used to allocate specified size low memory. When reserving crashkernel in high memory, some low memory is reserved for crash dump kernel devices. So there may be two regions reserved for crash dump kernel. In order to distinct from the high region and make no effect to the use of existing kexec-tools, rename the low region as "Crash kernel (low)", and pass the low region by reusing DT property "linux,usable-memory-range". We made the low memory region as the last range of "linux,usable-memory-range" to keep compatibility with existing user-space and older kdump kernels. Besides, we need to modify kexec-tools: arm64: support more than one crash kernel regions(see [1]) Another update is document about DT property 'linux,usable-memory-range': schemas: update 'linux,usable-memory-range' node schema(see [2]) This patchset contains the following 10 patches: 0001-0004 are some x86 cleanups which prepares for making functionsreserve_crashkernel[_low]() generic. 0005 makes functions reserve_crashkernel[_low]() generic. 0006-0007 reimplements arm64 crashkernel=X. 0008-0009 adds memory for devices by DT property linux,usable-memory-range. 0010 updates the doc. Changes since [v16] - Because no functional changes in this version, so add "Tested-by: Dave Kleikamp <dave.kleikamp@xxxxxxxxxx>" for patch 1-9 - Add "Reviewed-by: Rob Herring <robh@xxxxxxxxxx>" for patch 8 - Update patch 9 based on the review comments of Rob Herring - As Catalin Marinas's suggestion, merge the implementation of ARCH_WANT_RESERVE_CRASH_KERNEL into patch 5. Ensure that the contents of X86 and ARM64 do not overlap, and reduce unnecessary temporary differences.
An Internal review has been done, so for this series, Reviewed-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx>