Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > b8204bfed5255fbbec2bb0fe190e1aec > files > 22

kexec-tools-1.102pre-77.el5.3.src.rpm

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,