makedumpfile fails on SGI machine

Ken'ichi Ohmichi oomichi at mxs.nes.nec.co.jp
Tue Aug 5 08:07:17 EDT 2008


Hi Bernhard,

Ken'ichi Ohmichi wrote:
>> * Ken'ichi Ohmichi [2008-07-31 19:25]:
>>> I tried to reproduce this problem on my machine by using an ia64 linux-2.6.26
>>> discontigmem kernel, but it could not do it. makeudmpifle did not fail.
>>> I want to know whether this problem depends on the kernel or either the machine.
>>> Could you send me the kernel .config file ?
>> I think that problem is machine specific. However, here is the .config.
> 
> Thank you for config file.
> 
> I'm starting the kernel compiling.
> I'll investigate this problem the next week.

Unfortunately, the compiled kernel got panic when booting.
So I cannot reproduce this problem on my machine yet.
I'm trying it again.

BTW, I'd like to know some conditions of this problem.
So please let me know the makedumpfile commandline which you run.
 Ex. # makedumpfile -d 31 -x vmlinux /proc/vmcore dumpfile


I doubt that makedumpfile cannot distinguish the pgtable correctly.
I created the debugging patch. Please run makedumpfile-1.2.7 applied
with it by '-D' option, and report the output.
According to your kernel .config file, the output should contain
"PAGETABLE_4L : ON".


Thanks
Ken'ichi Ohmichi

---
diff -puN backup/v1.2.7/ia64.c makedumpfile/ia64.c
--- backup/v1.2.7/ia64.c	2008-07-18 11:23:29.000000000 +0900
+++ makedumpfile/ia64.c	2008-08-06 05:40:27.000000000 +0900
@@ -67,21 +67,20 @@ get_machdep_info_ia64(void)
 	else
 		info->vmalloc_start = KERNEL_VMALLOC_BASE;
 
-	if ((vt.mem_flags & MEMORY_PAGETABLE_4L)
-	    || (vt.mem_flags & MEMORY_PAGETABLE_3L))
-		return TRUE;
-
 	/*
 	 * Check the pgtable (3 Levels or 4 Levels).
 	 */
-	if (!strncmp(SRCFILE(pud_t), STR_PUD_T_4L, strlen(STR_PUD_T_4L)))
+	if ((vt.mem_flags & MEMORY_PAGETABLE_4L)
+	    || !strncmp(SRCFILE(pud_t), STR_PUD_T_4L, strlen(STR_PUD_T_4L))) {
 		vt.mem_flags |= MEMORY_PAGETABLE_4L;
-
-	else if (!strncmp(SRCFILE(pud_t), STR_PUD_T_3L, strlen(STR_PUD_T_3L)))
+		DEBUG_MSG("PAGETABLE_4L : ON\n");
+	} else if ((vt.mem_flags & MEMORY_PAGETABLE_3L)
+	    || !strncmp(SRCFILE(pud_t), STR_PUD_T_3L, strlen(STR_PUD_T_3L))) {
 		vt.mem_flags |= MEMORY_PAGETABLE_3L;
-
-	else
+		DEBUG_MSG("PAGETABLE_3L : ON\n");
+	} else {
 		MSG("Can't distinguish the pgtable.\n");
+	}
 
 	return TRUE;
 }



More information about the kexec mailing list