[coreboot] [PATCH] CN700/VT8237R stage2
Corey Osgood
corey.osgood at gmail.com
Sat Nov 1 06:06:09 CET 2008
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:
/home/corey/coreboot/coreboot-v3/arch/x86/via/stage1.c: In function
'disable_car':
/home/corey/coreboot/coreboot-v3/arch/x86/via/stage1.c:49: warning: passing
argument 1 of 'memcpy' discards qualifiers from pointer target type
Thanks,
Corey
On Fri, Oct 31, 2008 at 9:59 PM, Carl-Daniel Hailfinger <
c-d.hailfinger.devel.2006 at gmx.net> wrote:
> On 01.11.2008 02:50, Carl-Daniel Hailfinger wrote:
> > On 31.10.2008 01:36, Corey Osgood wrote:
> >
> >> debug log attached.
> >>
> >>
> >
> > Thanks, the log was really informative. Can you apply the following
> > patch and report back? Yes, the patch is evil, but it may help track
> > down the issue.
> >
>
> And the patch had minor garbage in it. New patch follows:
>
> Index: arch/x86/via/stage1.c
> ===================================================================
> --- arch/x86/via/stage1.c (Revision 976)
> +++ arch/x86/via/stage1.c (Arbeitskopie)
> @@ -29,12 +29,14 @@
> #include <string.h>
> #include <mtrr.h>
> #include <via_c7.h>
> +#include <uart8250.h>
>
> /**
> * Disable Cache As RAM (CAR) after memory is setup.
> */
> 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
> @@ -45,9 +47,19 @@
> 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");
> + uart8250_tx_byte(TTYSx_BASE, 'F');
> + uart8250_tx_byte(TTYSx_BASE, 'O');
> + uart8250_tx_byte(TTYSx_BASE, 'O');
> + uart8250_tx_byte(TTYSx_BASE, 'B');
> + uart8250_tx_byte(TTYSx_BASE, 'A');
> + uart8250_tx_byte(TTYSx_BASE, 'R');
> + uart8250_tx_byte(TTYSx_BASE, '\n');
> __asm__ __volatile__(
> /* We don't need cache as ram for now on */
> /* disable cache */
> @@ -55,6 +67,52 @@
> " orl $(0x1<<30),%%eax \n"
> " movl %%eax, %%cr0 \n"
>
> + " movl $99, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $99, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $104, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $105, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $115, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $98, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $108, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $10, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> +
> /* disable fixed mtrr from now on, it will be enabled by
> coreboot_ram again*/
> " movl %[_SYSCFG_MSR], %%ecx \n"
> " rdmsr \n"
> @@ -64,6 +122,67 @@
> " wrmsr \n"
> #warning Must clear MTRR 0x200 and 0x201
>
> + " movl $102, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $105, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $120, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $109, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $116, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $114, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $114, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $105, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $115, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $98, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $108, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $10, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> +
> /* Set the default memory type and disable fixed and enable
> variable MTRRs */
> " movl %[_MTRRdefType_MSR], %%ecx \n"
> " xorl %%edx, %%edx \n"
> @@ -71,14 +190,202 @@
> " movl $0x00000800, %%eax \n"
> " wrmsr \n"
>
> + " movl $118, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $114, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $105, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $98, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $108, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $109, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $116, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $114, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $114, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $115, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $110, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $98, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $108, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $10, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> +
> /* enable cache */
> " movl %%cr0, %%eax \n"
> " andl $0x9fffffff,%%eax \n"
> " movl %%eax, %%cr0 \n"
>
> + " movl $99, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $99, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $104, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $110, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $98, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $108, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $10, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> +
> " wbinvd \n"
>
> + " movl $119, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $98, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $105, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $110, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $118, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $111, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $110, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $10, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> +
> " movl %[newesp], %%esp \n"
> +
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $115, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $112, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $32, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $99, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $104, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $97, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $110, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $103, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $101, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $100, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> + " movl $10, %%edx\n"
> + " movl $1016, %%eax\n"
> + " call uart8250_tx_byte\n"
> +
> " call stage1_phase3 \n"
> :: [newesp] "i" (newlocation),
> [_SYSCFG_MSR] "i" (SYSCFG_MSR),
> Index: arch/x86/stage1.c
> ===================================================================
> --- arch/x86/stage1.c (Revision 976)
> +++ arch/x86/stage1.c (Arbeitskopie)
> @@ -263,6 +263,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();
>
>
> --
> http://www.hailfinger.org/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081101/e6b294af/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: c7_car_debug2.log
Type: application/octet-stream
Size: 26931 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081101/e6b294af/attachment.obj>
More information about the coreboot
mailing list