I thought I had x86 biarch crashdump working on x86 but it turns out was wrong. So I have merged crashdump-x86.c and crashdump-x86_64.c to ensure that things will work fine. There are a few misc cleanups in here to support biarch crashdumps. There is a kexec bzImage load optimization that allows me to use a 64bit crash kernel in 20M in my setup. Perhaps less. Earlier because of an alighment foulup I needed 32M and the kernel was loaded in the middle of the reserved crashdump region. There is also a new program vmcore-dmesg. Functionally it is very similar to the makedumpfile's --dmesg mode but it handles all of the crazy multi-arch cases so I only need to keep one binary around to strip the kernel's dmesg out of a core file. Additionally vmcore-dmesg is about half the size of makedumpfile and I can build it against uclibc, which makes it much more usable in my constrained initrd setup. I would post patches but I know I would fat finger that horribly. git pull git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/kexec-tools-devel.git --- commit 0320ba301f1e944fde3977df91180a538e99b9aa Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 23:19:35 2010 -0700 x86 bzImage: Optimize the panic kernel memory layout. Load the setup sectors above the kernel in the panic case, to avoid wasting memory. Linux kernels frequently have a severe alignment requirment that can be as much as 16M. The start of the reserved crash kernel region is 16M aligned. The setup sectors are tiny 20k? and when we are not running the real mode code they can live anywhere. Move the setup sectors from lower address than the kernel to higher address than the kernel avoids introducing a bad alignment. Allowing the linux kernel to load lower. Loading the linux kernel lower in memory ensures memory is used more efficiently. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 8bd3608a761cc7734f1599945f558cdfc8ee94b3 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 15:00:10 2010 -0700 kexec-tools: Add vmcore-dmesg vmcore-dmesg is a trivial utility to extract the dmesg from a vmcore. This was written in reaction to problems I was having building makedumpfile, and using makedumpfile for extracting dmesg. makedumpfile does a whole lot of things, uses a whole lot of libraries and which make it hard to compile and a little bit clunky to remember the command line switches. So I have written the trivial vmcore-dmesg program that reads a vmcore either /proc/vmcore or a saved version vmcore and writes the dmesg to stdout. There is nothing to vmcore-dmesg and all of the arch dependencies are wrapped up in generating the core file. Which means a vmcore-dmesg should work with core files of all architectures without needing a rebuild. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 6d4b8e90bc066e79dbc8a1387fb9e32c7d0f9435 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Wed Sep 8 10:52:01 2010 -0700 x86_64: Kill now unused crashdump-x86_64.[ch] Now we use the i386 crashdump-x86 instead we can kill crashdump-x86_64. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit ff053cdb05c2d95dafbcbfd4ffc079cad3c56cc8 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Wed Sep 8 10:12:09 2010 -0700 x86_64: Use the x86 crashdump With proper biarch support in crashdump-x86, crashdump-x86_64 is now redudant and we can use crashdump-x86 everywhere. Using crashdump-x86 everywhere results in a little unnecessary i386 logic on x86_64 but is otherwise harmless. Removing the unnecessary duplication between i386 and x86_64 should make the code much easier to maintain going forward. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit aa0418789d8e89478044511c16a32ed4c45fefb3 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 14:11:54 2010 -0700 x86_64: Use the i386 arch_options_t on x86_64 In preparation for having a single crashdump implementation on i386 and x86_64 start sharing arch_options_t between i386 and x86_64, and don't make arch_options static on x86_64. i386 and x86_64 have been using identitcal defitions of arch_options for a while this change now reflects that practical reality in the code. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 773ff64ab0ed27ca6b33c9866f89291226e86574 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 14:10:21 2010 -0700 i386 crashdump: Preserve credits of x86_64 version Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 9322014fbfa77b5c744d8fabd3e9adf30b751219 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 13:58:29 2010 -0700 i386 crashdump: Compute page_offset paddr vaddr and size like x86_64. Make certain we are using the same page_offset, paddr, and vaddr and kernel size that the x86_64 crashdump code is using. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 53408ce05fc411a1a5d8aee902ed0172518fc5d8 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Wed Sep 8 12:01:14 2010 -0700 kexec elf: Handle 64bit elf executables on 32bit platforms. - Widen some types. Why did I use unsigned long? I guess this code predates the decision to support biarch. - Since I have made the types wider fix the statements that print those types out. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit f79a61460fdb6fda47b3a1b01e1b4771374b7975 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 20:31:03 2010 -0700 kexec elf: Clean up error messages build_mem_phdrs Don't print uncondintionally print an error message about KCORE_ELF_HEADERS_SIZE being wrong when the elf headers are truncated when build_mem_phdrs fails because there are other reasons we could be truncated (like an actual damaged elf file). Instead only print an error message when either probe_debug is true or we are skipping the total file size checks for some reason. When we do print an error message limit the message to the fact that we are truncated and how many bytes we have and how many bytes we need. The context of the failure should be able to provide the rest of the information. For now add a comment in crashdump-x86_64.c to direct people to KCORE_ELF_HEADERS_SIZE so that if someone finds the code things can be adjusted. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 4c4ef6506eb29cfad16546f6b8435935432d3251 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 13:34:43 2010 -0700 i386 crashdump: pass acpi info, and generalize hack - Pass the acpi memap to the kernel. - Port the fix from x86_64 to not truncate the elf note segment to 16K, to keep large machines happy. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit d25f82619565f862e2a6104fac505b9c13c8fe4c Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 13:23:55 2010 -0700 i386 crashdump: move crashdump debugging code under #ifdef DEBUG o Put the debug code under #ifdef DEBUG instead of #if 0. o Do this to match the x86_64 code. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 672991ea2208dd478e8c52982f39a87c64a4c8a5 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 13:12:18 2010 -0700 i386 crashdump: Unify get_crash_memory_ranges. Build a version of get_crash_memory_ranges that works the same on both x86_64 and x86. Reorder the calls in load_crashdump_segments so we have the architectures low memory limit when we call get_crash_memory_ranges. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit b73411718dbf452675fa903b2db7ab58c24ef1ba Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 12:53:11 2010 -0700 i386 crashdump: Rename and include the x86_64 constants. Unify the 32bit and the 64bit crashdump headers. Rename arch specific defintions to arch specific names to be clear. Update users of the renamed constants. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 8f211c7519327124bb18d9e362ac9777bf400c67 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 12:43:40 2010 -0700 i386 crashdump: Keep elf_info on the stack. In preparation for merging crashdump-x86 and crashdump-x86_64 move elf_info onto the stack and start filling it out dynamically as appropriate. Included in this change is only setting lowmem_limit and get_note_info when we are generating a core file for a 32bit kernel. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit c8e346688c6358427213d9d6fdb83765e365cccd Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 12:05:40 2010 -0700 crashdump: Move kern_vaddr_start from kexec_info into crash_elf_info These fields as defined in kexec_info are not biarch safe and beyond that crash_elf_info is the structure for passing this kind of information not kexec_info. So move them in prepartion for properly cleaning up biarch x86 functionality. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit d9bf000b6260ee4558b2d2eb3af08e09cd1fe794 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 11:42:39 2010 -0700 kexec: Kill arch_init The function only had one user, the error checking was wrong, and the functions it performed are best done elsewhere so remove the tempation of a problemenatic hook. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 3578b1f1437f8d1b569d1e30f6d4e15edd1cce53 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 11:37:21 2010 -0700 x86_64 crashdump: Move calculation of the page offset into crashdump-x86_64.c Don't calculate page_offfset in arch_init. Performing the work there badly messes up biarch support, so move the work into crashdump_x86_64. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit 3cab31db10dd74aa148ad20aaa3455723bf45138 Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 11:25:30 2010 -0700 kexec: Move kernel_version into the kexec core I'm not pleased with the hacks that we use kernel_version for but kernel_version itself is reasonable code and might be needed elsewhere, so move kernel_version into the kexec core. Signed-off-by: Eric W. Biederman <ebiederm at xmission.com> commit ebeb4da62f8b51c63a46349b219a5605ee8d79bd Author: Eric W. Biederman <ebiederm at xmission.com> Date: Tue Sep 7 10:41:56 2010 -0700 i386 elf: Correct the probe error string Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>