Prev: [PATCH 3/5] Support second memory region in crash_shrink_memory()
Next: [GIT PULL] fallout from percpu.h -> slab.h dependency breaking
From: Vitaly Mayatskikh on 22 Apr 2010 12:30 Patch applies to 2.6.34-rc5 On x86 platform, even if hardware is 64-bit capable, kernel starts execution in 32-bit mode. When system is kdump-enabled, crashed kernel switches to 32 bit mode and jumps into new kernel. This automatically limits location of dump-capture kernel image and it's initrd by first 4Gb of memory. Switching to 32 bit mode is performed by purgatory code, which has relocations of type R_X86_64_32S (32-bit signed), and this cuts "good" address space for crash kernel down to 2 Gb. I/O regions may cut down this space further. When system has a lot of memory (hundreds of gigabytes), dump-capture kernel also needs relatively a lot of memory to account old kernel's pages. It may be impossible to reserve enough memory below 2 or even 4 Gb. Simplest solution is it break dump-capture kernel's reserved memory region into two pieces: first (small) region for kernel and initrd images may be easily placed in "good" address space in the beginning of physical memory, and second region may be located anywhere. This serie of patches realizes this approach. It requires also changes in kexec utility to make this feature work, but is backward-compatible: old versions of kexec will work with new kernel. I will post patch to kexec-tools upstream separately. Signed-off-by: Vitaly Mayatskikh <v.mayatskih(a)gmail.com> Documentation/kdump/kdump.txt | 40 ++++++++ Documentation/kernel-parameters.txt | 19 +++- arch/x86/kernel/setup.c | 56 +++++++---- include/linux/kexec.h | 6 + kernel/kexec.c | 182 ++++++++++++++++++++++++++--------- 5 files changed, 232 insertions(+), 71 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |