From: Cliff Wickman <cpw@xxxxxxx> On kexec set-up of a crash kernel on a very large memory machine we sometimes see the worrisome warning: Too many memory ranges, truncating... meaning that the total count of e820 ram, reserved and ACPI spaces is over 128. Per the comment in do_bzImage_load(): /* If using bzImage for capture kernel, then we will not be * executing real mode code. setup segment can be loaded * anywhere as we will be just reading command line. */ So if I understand, the e820 table built here and added to the 'real_mode' area is not going to be used. So the warning message can be omitted. Signed-off-by: Cliff Wickman <cpw at sgi.com> --- kexec/arch/i386/x86-linux-setup.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) Index: kexec-tools-2.0.4-rc1/kexec/arch/i386/x86-linux-setup.c =================================================================== --- kexec-tools-2.0.4-rc1.orig/kexec/arch/i386/x86-linux-setup.c +++ kexec-tools-2.0.4-rc1/kexec/arch/i386/x86-linux-setup.c @@ -34,6 +34,7 @@ #include "../../kexec.h" #include "kexec-x86.h" #include "x86-linux-setup.h" +#include "../../kexec/kexec-syscall.h" void init_linux_parameters(struct x86_linux_param_header *real_mode) { @@ -491,7 +492,13 @@ void setup_linux_system_parameters(struc die("Cannot get memory information\n"); } if (ranges > E820MAX) { - fprintf(stderr, "Too many memory ranges, truncating...\n"); + if (!(kexec_flags & KEXEC_ON_CRASH)) + /* + * this e820 not used for capture kernel, see + * do_bzImage_load() + */ + fprintf(stderr, + "Too many memory ranges, truncating...\n"); ranges = E820MAX; } real_mode->e820_map_nr = ranges;