* Stefan Reinauer <[email protected]> [110502 20:34]:
> * Sven Schnelle <[email protected]> [110502 16:13]:
> > Add an option to make compression of ramstage configurable. Right now
> > it is always compressed. On my Thinkpad, the complete boot to grub takes
> > 4s, with around 1s required for decompressing ramstage. This is probably
> > caused by the fact the decompression does a lot of single byte/word/qword
> > accesses, which are really slow on SPI buses. So give the user the option
> > to store ramstage uncompressed, if he has enough memory.
> 
> Hi Sven,
> 
> can you try whether your thinkpad can boot faster if you enable spi
> prefetching in src/southbridge/intel/i82801gx/bootblock.c
> 
> i.e.
> 
> static void enable_spi_prefetch(void)
> {
>         u8 reg8;
>         device_t dev;
> 
>         dev = PCI_DEV(0, 0x1f, 0);
> 
>         reg8 = pci_read_config8(dev, 0xdc);
>         reg8 &= ~(3 << 2);
>         reg8 |= (2 << 2); /* Prefetching and Caching Enabled */
>         pci_write_config8(dev, 0xdc, reg8);
> }
> 
> static void bootblock_southbridge_init(void)
> {
>         ...
>         enable_spi_prefetch();
>         ...
> }

And in addition you need to set up MTRRs correctly by doing something
like this: (sorry, wrong CPU type but the code should be fairly similar)

Signed-off-by: Stefan Reinauer <[email protected]>

--- src/cpu/intel/model_106cx/cache_as_ram.inc
+++ src/cpu/intel/model_106cx/cache_as_ram.inc
@@ -195,13 +195,27 @@ clear_mtrrs:
 
        post_code(0x38)
 
-       /* Enable Write Back and Speculative Reads for the first 1MB. */
+       /* Enable Write Back and Speculative Reads for the first MB
+        * and coreboot_ram.
+        */
        movl    $MTRRphysBase_MSR(0), %ecx
        movl    $(0x00000000 | MTRR_TYPE_WRBACK), %eax
        xorl    %edx, %edx
        wrmsr
        movl    $MTRRphysMask_MSR(0), %ecx
-       movl    $(~(1024 * 1024 - 1) | (1 << 11)), %eax
+       movl    $(~(CONFIG_RAMTOP - 1) | MTRRphysMaskValid), %eax
+       xorl    %edx, %edx
+       wrmsr
+
+       /* Enable Caching and speculative Reads for the
+        * complete ROM now that we actually have RAM.
+        */
+       movl    $MTRRphysBase_MSR(1), %ecx
+       movl    $(0xffc00000 | MTRR_TYPE_WRPROT), %eax
+       xorl    %edx, %edx
+       wrmsr
+       movl    $MTRRphysMask_MSR(1), %ecx
+       movl    $(~(4*1024*1024 - 1) | MTRRphysMaskValid), %eax
        xorl    %edx, %edx
        wrmsr
 

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to