To make use of HAVE_HIGH_TABLES following patch is needed. Also, it moves
authorRudolf Marek <r.marek@assembler.cz>
Sat, 21 Mar 2009 11:50:20 +0000 (11:50 +0000)
committerRudolf Marek <r.marek@assembler.cz>
Sat, 21 Mar 2009 11:50:20 +0000 (11:50 +0000)
coreboot to 1MB and tries to cache whole range for XIP. The UMA part colide a
bit with the HAVE_HIGH_TABLES region. I solved that by relocation of the region.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4024 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/mainboard/asus/m2v-mx_se/Config.lb
src/mainboard/asus/m2v-mx_se/mainboard.c
src/southbridge/via/k8t890/k8t890_dram.c

index 50b8ddbf99f5ddeac69b60acc210cd98019bfa3b..a1f291fd333399926ad9e7fd601b7a2dc4dbe409 100644 (file)
@@ -34,7 +34,8 @@ default CONFIG_ROM_PAYLOAD       = 1
 default _ROMBASE     = (CONFIG_ROM_PAYLOAD_START + PAYLOAD_SIZE)
 
 ##WARNING enable caching of whole ROM during CAR
-default XIP_ROM_SIZE =  ROM_SIZE
+##for 512KB flash
+default XIP_ROM_SIZE =  0x80000
 default XIP_ROM_BASE =  0xffffffff + 1 - XIP_ROM_SIZE
 
 arch i386 end 
index 2a5910b3a329974047473fc480ca95ab16aa6956..4735d7c851d7568bca71f033ee7e99b7e5bc419a 100644 (file)
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
+#include <boot/tables.h>
 #include "chip.h"
 
+/* in arch/i386/boot/tables.c */
+extern uint64_t high_tables_base, high_tables_size;
+
+int add_mainboard_resources(struct lb_memory *mem)
+{
+#if HAVE_HIGH_TABLES == 1
+       printk_debug("Adding high table area\n");
+       lb_add_memory_range(mem, LB_MEM_TABLE,
+               high_tables_base, high_tables_size);
+#endif
+       return 0;
+}
+
 #if CONFIG_CHIP_NAME == 1
 struct chip_operations mainboard_ops = {
        CHIP_NAME("ASUS M2V-MX SE Mainboard")
index 1c60a78a13937771fce3fcff7cf6d82268e45077..53392577436f9d0ad6b8c8eb8bae7364ccbb3cd9 100644 (file)
@@ -91,6 +91,17 @@ static void get_memres(void *gp, struct device *dev, struct resource *res)
                (proposed_base < ((uint64_t) 0xffffffff) )) {
                resmax = res;
        }
+#if HAVE_HIGH_TABLES==1
+/* in arch/i386/boot/tables.c */
+extern uint64_t high_tables_base, high_tables_size;
+
+       if ((high_tables_base) && ((high_tables_base > proposed_base) &&
+                       (high_tables_base < (res->base + res->size)))) {
+               high_tables_base = proposed_base - high_tables_size;
+               printk_debug("Moving the high_tables_base pointer to "
+                               "new base %llx\n", high_tables_base);
+       }
+#endif
 }