So far powerpc kernel never exported memory limit information which is reflected by mem= kernel cmdline option. Hence, kexec-tools always use to build ELF header for entire system RAM generating a dump bigger than the actual memory used by the first kernel. The following upstream kernel commits now exports memory limit information through /proc/device-tree file: 4bc77a5ed - powerpc: Export memory limit via device tree a84fcd468 - powerpc: Change memory_limit from phys_addr_t to unsigned long long This patch series now reads the memory limit information from device-tree file if present and limits the crash memory ranges accordingly. Tested these patches on ppc32(ppc440) and ppc64 with a kernel patch by Suzuki. Changes in v2: - Fixed few formatting and coding style issues. - Fixed error handling path and possible buffer overflow issue in patch 1/2. - Fixed an issue where an additional PT_LOAD section, representing zero size memory segment (with start address == memory_limit), was getting added to ELF section. Signed-off-by: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com> Tested-by: Suzuki K. Poulose <suzuki at in.ibm.com> --- Mahesh Salgaonkar (2): kexec: Respect memory limit while building crash memory ranges on ppc32. kexec: Respect memory limit while building crash memory ranges on ppc64 kexec/arch/ppc/crashdump-powerpc.c | 14 ++++++++-- kexec/arch/ppc/crashdump-powerpc.h | 1 + kexec/arch/ppc/kexec-ppc.c | 51 ++++++++++++++++++++++++++++++++++++ kexec/arch/ppc64/crashdump-ppc64.c | 11 +++++++- kexec/arch/ppc64/crashdump-ppc64.h | 1 + kexec/arch/ppc64/kexec-ppc64.c | 27 +++++++++++++++++++ 6 files changed, 101 insertions(+), 4 deletions(-) -- -Mahesh