On Tuesday, January 29, 2013 03:10:38 AM Yinghai Lu wrote: > On Mon, Jan 28, 2013 at 5:11 PM, H. Peter Anvin <hpa at zytor.com> wrote: > >> So I guess the final patch should be: > >> - Add a new e820 type: > >> E820_KDUMP_RESERVED /* Originally usable memory where the crashed > >> kernel kernel resided in */ > >> - Use Yinghai's last posted patch, but instead of: > >> + e820_update_range(0, ULLONG_MAX, E820_RAM, > >> + E820_RESERVED); > >> ... > >> + e820_remove_range(start_at, mem_size, E820_RESERVED, 0); > >> do: > >> + e820_update_range(0, ULLONG_MAX, E820_RAM, > >> + E820_KDUMP_RESERVED); > >> ... > >> + e820_remove_range(start_at, mem_size, E820_KDUMP_RESERVED, 0); > >> > >> - Come up with another memmap=kdump_reserve_ram memmap option name > >> or however it should get named... > >> > >> If this proposal gets accepted, I can send a tested patch... > >> > > > > Yes, this is much saner. There really shouldn't need to be an option, > > even; since the tools need to be modified anyway, just modify the actual > > memory map data structure itself. > > yes, > > kexec-tools will change that to E820_KDUMP_RESERVED (or other good name). > > We only need to update kernel to get old max_pfn by > checking E820_KDUMP_RESERVED. Wait, above proposal does not include kexec-tools mangling of the e820 table, for several reasons: - Keep the boot interface clean and pass the original table - Only one possible error source on e820 table modifications - While hpa proposed kexec-tools to pass a modified e820 table to make things easier, exactly the opposite is the case: If kexec-tools and the kernel modify the table, things are more complex and hard to understand in case of debugging where things went wrong - It's really easy to do that in the kernel. As shown above it should simply be this line to change usable areas into E820_KDUMP_RESERVED ones: e820_update_range(0, ULLONG_MAX, E820_RAM, E820_KDUMP_RESERVED); and possibly slight adjusting when the memmap=X#Y memory the kdump kernel uses is added (has to override E820_KDUMP_RESERVED areas with usable memory again) My previously posted kexec-tools patches should simply work, it's just that the memmap option name changes to: memmap=kdump_reserve_ram This is what I proposed and is IMO the best and less complex way to go. I guess I still wait another day for comments and will send something if you agree. Thomas