Debug log attached, I'm using COM2 so I modified the patch to use $760 instead of $1016, I hope that's right. I'm honestly not sure if the output is what you were expecting or not, I don't think it is though. One thing I noticed in the build log, with or without the patch, dunno if it matters or not:<br>
<br>/home/corey/coreboot/coreboot-v3/arch/x86/via/stage1.c: In function 'disable_car':<br>/home/corey/coreboot/coreboot-v3/arch/x86/via/stage1.c:49: warning: passing argument 1 of 'memcpy' discards qualifiers from pointer target type<br>
<br>Thanks,<br>Corey<br><br><div class="gmail_quote">On Fri, Oct 31, 2008 at 9:59 PM, Carl-Daniel Hailfinger <span dir="ltr"><<a href="mailto:c-d.hailfinger.devel.2006@gmx.net">c-d.hailfinger.devel.2006@gmx.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On 01.11.2008 02:50, Carl-Daniel Hailfinger wrote:<br>
> On 31.10.2008 01:36, Corey Osgood wrote:<br>
><br>
>> debug log attached.<br>
>><br>
>><br>
><br>
> Thanks, the log was really informative. Can you apply the following<br>
> patch and report back? Yes, the patch is evil, but it may help track<br>
> down the issue.<br>
><br>
<br>
</div>And the patch had minor garbage in it. New patch follows:<br>
<div><div></div><div class="Wj3C7c"><br>
Index: arch/x86/via/stage1.c<br>
===================================================================<br>
--- arch/x86/via/stage1.c (Revision 976)<br>
+++ arch/x86/via/stage1.c (Arbeitskopie)<br>
@@ -29,12 +29,14 @@<br>
#include <string.h><br>
#include <mtrr.h><br>
#include <via_c7.h><br>
+#include <uart8250.h><br>
<br>
/**<br>
* Disable Cache As RAM (CAR) after memory is setup.<br>
*/<br>
void disable_car(void)<br>
{<br>
+ printk(BIOS_DEBUG, "disable_car entry\n");<br>
/* Determine new global variable location. Stack organization from top<br>
* Top 4 bytes are reserved<br>
* Pointer to global variables<br>
@@ -45,9 +47,19 @@<br>
const struct global_vars *newlocation = (struct global_vars *)((RAM_STACK_BASE - sizeof(struct global_vars *) - sizeof(struct global_vars)) & ~0x7);<br>
/* Copy global variables to new location. */<br>
memcpy(newlocation, global_vars(), sizeof(struct global_vars));<br>
+ printk(BIOS_DEBUG, "disable_car global_vars copy done\n");<br>
/* Set the new global variable pointer. */<br>
*(struct global_vars **)(RAM_STACK_BASE - sizeof(struct global_vars *)) = newlocation;<br>
<br>
+ printk(BIOS_DEBUG, "disable_car global_vars pointer adjusted, entering asm code...");<br>
+ printk(BIOS_DEBUG, "now..........................................................................\n");<br>
+ uart8250_tx_byte(TTYSx_BASE, 'F');<br>
+ uart8250_tx_byte(TTYSx_BASE, 'O');<br>
+ uart8250_tx_byte(TTYSx_BASE, 'O');<br>
+ uart8250_tx_byte(TTYSx_BASE, 'B');<br>
+ uart8250_tx_byte(TTYSx_BASE, 'A');<br>
+ uart8250_tx_byte(TTYSx_BASE, 'R');<br>
+ uart8250_tx_byte(TTYSx_BASE, '\n');<br>
__asm__ __volatile__(<br>
/* We don't need cache as ram for now on */<br>
/* disable cache */<br>
@@ -55,6 +67,52 @@<br>
" orl $(0x1<<30),%%eax \n"<br>
" movl %%eax, %%cr0 \n"<br>
<br>
+ " movl $99, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $99, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $104, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $105, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $115, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $98, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $108, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $10, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+<br>
/* disable fixed mtrr from now on, it will be enabled by coreboot_ram again*/<br>
" movl %[_SYSCFG_MSR], %%ecx \n"<br>
" rdmsr \n"<br>
</div></div>@@ -64,6 +122,67 @@<br>
<div><div></div><div class="Wj3C7c"> " wrmsr \n"<br>
#warning Must clear MTRR 0x200 and 0x201<br>
<br>
+ " movl $102, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $105, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $120, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $109, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $116, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $114, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $114, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $105, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $115, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $98, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $108, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $10, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+<br>
</div></div><div class="Ih2E3d"> /* Set the default memory type and disable fixed and enable variable MTRRs */<br>
" movl %[_MTRRdefType_MSR], %%ecx \n"<br>
" xorl %%edx, %%edx \n"<br>
</div>@@ -71,14 +190,202 @@<br>
<div><div></div><div class="Wj3C7c"> " movl $0x00000800, %%eax \n"<br>
" wrmsr \n"<br>
<br>
+ " movl $118, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $114, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $105, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $98, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $108, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $109, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $116, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $114, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $114, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $115, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $110, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $98, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $108, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $10, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+<br>
</div></div><div><div></div><div class="Wj3C7c"> /* enable cache */<br>
" movl %%cr0, %%eax \n"<br>
" andl $0x9fffffff,%%eax \n"<br>
" movl %%eax, %%cr0 \n"<br>
<br>
+ " movl $99, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $99, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $104, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $110, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $98, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $108, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $10, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+<br>
</div></div><div><div></div><div class="Wj3C7c"> " wbinvd \n"<br>
<br>
+ " movl $119, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $98, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $105, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $110, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $118, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $111, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $110, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $10, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+<br>
</div></div><div><div></div><div class="Wj3C7c"> " movl %[newesp], %%esp \n"<br>
+<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $115, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $112, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $32, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $99, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $104, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $97, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $110, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $103, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $101, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $100, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+ " movl $10, %%edx\n"<br>
+ " movl $1016, %%eax\n"<br>
+ " call uart8250_tx_byte\n"<br>
+<br>
</div></div><div class="Ih2E3d"> " call stage1_phase3 \n"<br>
:: [newesp] "i" (newlocation),<br>
[_SYSCFG_MSR] "i" (SYSCFG_MSR),<br>
</div><div><div></div><div class="Wj3C7c">Index: arch/x86/stage1.c<br>
===================================================================<br>
--- arch/x86/stage1.c (Revision 976)<br>
+++ arch/x86/stage1.c (Arbeitskopie)<br>
@@ -263,6 +263,7 @@<br>
#ifdef CONFIG_CONSOLE_BUFFER<br>
/* Move the printk buffer to PRINTK_BUF_ADDR_RAM */<br>
printk_buffer_move((void *)PRINTK_BUF_ADDR_RAM, PRINTK_BUF_SIZE_RAM);<br>
+ printk(BIOS_DEBUG, "Done printk() buffer move\n");<br>
#endif<br>
/* Turn off Cache-As-Ram */<br>
disable_car();<br>
<br>
<br>
--<br>
<a href="http://www.hailfinger.org/" target="_blank">http://www.hailfinger.org/</a><br>
<br>
</div></div></blockquote></div><br>