Re: psycho_irq_build: Wacky INO [3c]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Meelis Roos <mroos@xxxxx>
Date: Sun, 14 Sep 2008 10:27:21 +0300 (EEST)

> Calibrating delay using timer specific routine.. 801.65 BogoMIPS (lpj=4008283)
> Mount-cache hash table entries: 512
> Fast Data Access MMU Miss
> {7} ok 

That's very very strange.  What's the most odd is that the firmware message
and error is from cpu #7, which from your e3500 prtconf we shouldn't even
be running on yet.  The system should boot on cpu #6.  So I suspect that
perhaps we are somehow corrupting some piece of firmware state on cpu #6
and this is why cpu #7 crashes us out to the firmware prompt.

The next non-trivial thing done in the boot sequence is mem_init() and that
prints a log message, which we aren't seeing here.

So here is a debugging patch that will trace the execution of mem_init() so
that we can perhaps figure out which part causes this crash.

Another thing you can do is type ".registers" when you get that firmware
prompt after the crash.  It will spit out some cpu state.

diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index a41df7b..cb45e12 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -1894,6 +1894,9 @@ void __init mem_init(void)
 	unsigned long addr, last;
 	int i;
 
+#if 1
+	prom_printf("mem_init(): ENTER\n");
+#endif
 	i = last_valid_pfn >> ((22 - PAGE_SHIFT) + 6);
 	i += 1;
 	sparc64_valid_addr_bitmap = (unsigned long *) alloc_bootmem(i << 3);
@@ -1901,6 +1904,10 @@ void __init mem_init(void)
 		prom_printf("mem_init: Cannot alloc valid_addr_bitmap.\n");
 		prom_halt();
 	}
+#if 1
+	prom_printf("mem_init(): memset() on sparc64_valid_addr_bitmap(%p)\n",
+		sparc64_valid_addr_bitmap);
+#endif
 	memset(sparc64_valid_addr_bitmap, 0, i << 3);
 
 	addr = PAGE_OFFSET + kern_base;
@@ -1910,10 +1917,16 @@ void __init mem_init(void)
 		addr += PAGE_SIZE;
 	}
 
+#if 1
+	prom_printf("mem_init(): setup_valid_addr_bitmap_from_pavail()\n");
+#endif
 	setup_valid_addr_bitmap_from_pavail();
 
 	high_memory = __va(last_valid_pfn << PAGE_SHIFT);
 
+#if 1
+	prom_printf("mem_init(): free_bootmem()\n");
+#endif
 #ifdef CONFIG_NEED_MULTIPLE_NODES
 	for_each_online_node(i) {
 		if (NODE_DATA(i)->node_spanned_pages != 0) {
@@ -1935,6 +1948,9 @@ void __init mem_init(void)
 	 * Set up the zero page, mark it reserved, so that page count
 	 * is not manipulated when freeing the page from user ptes.
 	 */
+#if 1
+	prom_printf("mem_init(): Allocate mem_map_zero()\n");
+#endif
 	mem_map_zero = alloc_pages(GFP_KERNEL|__GFP_ZERO, 0);
 	if (mem_map_zero == NULL) {
 		prom_printf("paging_init: Cannot alloc zero page.\n");
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux