On 29.10.2008 09:02, Corey Osgood wrote:
Attached patches for cn700, vt8237(r/s), and the mainboard, Jetway J7F2, along with a boot log. Currently, we're stuck in a reboot loop and I have no idea why, seems to be related to CAR disabling (this wasn't happening when disable_car was a noop). Carl-Daniel, any ideas?
Could you try this patch and report serial output back to the list? It should at least give me an impression about where the code is broken.
Regards, Carl-Daniel
Add more debugging to the critical stage1 code around disable_car().
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: corebootv3-via_car/arch/x86/via/stage1.c =================================================================== --- corebootv3-via_car/arch/x86/via/stage1.c (Revision 958) +++ corebootv3-via_car/arch/x86/via/stage1.c (Arbeitskopie) @@ -50,6 +50,7 @@ */ void disable_car(void) { + printk(BIOS_DEBUG, "disable_car entry\n"); /* Determine new global variable location. Stack organization from top * Top 4 bytes are reserved * Pointer to global variables @@ -60,9 +61,12 @@ const struct global_vars *newlocation = (struct global_vars *)((RAM_STACK_BASE - sizeof(struct global_vars *) - sizeof(struct global_vars)) & ~0x7); /* Copy global variables to new location. */ memcpy(newlocation, global_vars(), sizeof(struct global_vars)); + printk(BIOS_DEBUG, "disable_car global_vars copy done\n"); /* Set the new global variable pointer. */ *(struct global_vars **)(RAM_STACK_BASE - sizeof(struct global_vars *)) = newlocation;
+ printk(BIOS_DEBUG, "disable_car global_vars pointer adjusted, entering asm code..."); + printk(BIOS_DEBUG, "now..........................................................................\n"); __asm__ __volatile__( /* We don't need cache as ram for now on */ /* disable cache */ Index: corebootv3-via_car/arch/x86/stage1.c =================================================================== --- corebootv3-via_car/arch/x86/stage1.c (Revision 958) +++ corebootv3-via_car/arch/x86/stage1.c (Arbeitskopie) @@ -264,6 +264,7 @@ #ifdef CONFIG_CONSOLE_BUFFER /* Move the printk buffer to PRINTK_BUF_ADDR_RAM */ printk_buffer_move((void *)PRINTK_BUF_ADDR_RAM, PRINTK_BUF_SIZE_RAM); + printk(BIOS_DEBUG, "Done printk() buffer move\n"); #endif /* Turn off Cache-As-Ram */ disable_car();