28 lines
1.1 KiB
Diff
28 lines
1.1 KiB
Diff
diff -up kexec-tools-testing-20070330/kexec/arch/ia64/crashdump-ia64.c.orig kexec-tools-testing-20070330/kexec/arch/ia64/crashdump-ia64.c
|
|
--- kexec-tools-testing-20070330/kexec/arch/ia64/crashdump-ia64.c.orig 2008-04-08 14:36:59.000000000 -0400
|
|
+++ kexec-tools-testing-20070330/kexec/arch/ia64/crashdump-ia64.c 2008-04-08 14:41:43.000000000 -0400
|
|
@@ -224,9 +224,22 @@ int load_crashdump_segments(struct kexec
|
|
void *tmp;
|
|
if (info->kexec_flags & KEXEC_ON_CRASH ) {
|
|
if (get_crash_memory_ranges(&mem_range, &nr_ranges) == 0) {
|
|
+ int i;
|
|
|
|
info->kern_paddr_start = kernel_code_start;
|
|
- info->kern_vaddr_start = LOAD_OFFSET;
|
|
+ for (i=0; i < nr_ranges; i++) {
|
|
+ unsigned long long mstart = crash_memory_range[i].start;
|
|
+ unsigned long long mend = crash_memory_range[i].end;
|
|
+ if (!mstart && !mend)
|
|
+ continue;
|
|
+ if (kernel_code_start >= mstart &&
|
|
+ kernel_code_start < mend) {
|
|
+ info->kern_vaddr_start = mstart +
|
|
+ LOAD_OFFSET;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
info->kern_size = kernel_code_end - kernel_code_start + 1;
|
|
if (crash_create_elf64_headers(info, &elf_info,
|
|
crash_memory_range,
|