Kevin O'Connor wrote:
On Fri, Mar 06, 2009 at 05:18:15PM -0800, Joe Julian wrote:
I find this patch http://www.coreboot.org/pipermail/coreboot/2009-February/045068.html
Yes. You need to apply that patch. (Please confirm your machine has at least 1GiB of memory.)
The next thing you need to do is setup your SeaBIOS src/config.h. It should have CONFIG_COREBOOT set, CONFIG_DEBUG_SERIAL set, CONFIG_OPTIONROMS_DEPLOYED unset, and OPTIONROM_BDF/MEM_* set. I think you've already done this.
Then, one compiles the above, and flashes the chip.
If you're not seeing the correct output, something must be wrong. You'll need to capture the serial output and send the log. With the log, we'll be able to figure out what went wrong.
Thanks for your help. I can't directly apply that patch because it's been superseded by this one http://tracker.coreboot.org/trac/coreboot/changeset/3960 which works for me so far, with the following changes. There's a little bit of workaround there, as I don't know how to patch the HAVE_HIGH_TABLES into src/northbridge/amd/amdfam10/northbridge.c
Here's a link to my log: http://www.privatepaste.com/04ilD2DoPH
And yes, the machine has more than 1Gb. It has 8.
--- src/arch/i386/boot/tables.c (revision 3981) +++ src/arch/i386/boot/tables.c (working copy) @@ -58,7 +58,7 @@ }
#if HAVE_HIGH_TABLES == 1 -uint64_t high_tables_base = 0; +uint64_t high_tables_base = 0x3dff0000; uint64_t high_tables_size; #endif
@@ -188,11 +187,12 @@ rom_table_start, rom_table_end); #endif
+#if 0 /* The coreboot table must be in 0-4K or 960K-1M */ write_coreboot_table(low_table_start, low_table_end, rom_table_start, rom_table_end);
-#if 0 && HAVE_HIGH_TABLES == 1 +#else // HAVE_HIGH_TABLES == 1 /* This is currently broken and should be severely refactored. Ideally * we only have a pointer to the coreboot table in the low memory, so * anyone can find the real position. @@ -205,8 +205,8 @@ * corrupted */ if (high_tables_base) { - write_coreboot_table(high_table_start, high_table_end, - high_table_start, high_table_end); + write_coreboot_table(low_table_start, low_table_end, + high_table_start, high_table_end); } #endif
--- src/mainboard/tyan/s2912_fam10/mainboard.c (revision 3981) +++ src/mainboard/tyan/s2912_fam10/mainboard.c (working copy) @@ -24,6 +24,7 @@ #include <device/pci.h> #include <device/pci_ids.h> #include <device/pci_ops.h> +#include <boot/tables.h> #include "chip.h"
#if CONFIG_CHIP_NAME == 1 @@ -31,3 +32,15 @@ CHIP_NAME("Tyan S2912 Mainboard (Family 10)") }; #endif +/* 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; +} Index: src/mainboard/tyan/s2912_fam10/Options.lb =================================================================== --- src/mainboard/tyan/s2912_fam10/Options.lb (revision 3981) +++ src/mainboard/tyan/s2912_fam10/Options.lb (working copy) @@ -22,6 +22,8 @@ uses HAVE_MP_TABLE uses HAVE_PIRQ_TABLE uses HAVE_ACPI_TABLES +uses HAVE_MAINBOARD_RESOURCES +uses HAVE_HIGH_TABLES uses ACPI_SSDTX_NUM uses USE_FALLBACK_IMAGE uses USE_FAILOVER_IMAGE @@ -166,6 +168,8 @@
## ACPI tables will be included default HAVE_ACPI_TABLES=0 +default HAVE_MAINBOARD_RESOURCES=0 +default HAVE_HIGH_TABLES=1 ## extra SSDT num default ACPI_SSDTX_NUM=31
@@ -211,8 +215,8 @@ #default HW_MEM_HOLE_SIZE_AUTO_INC=1
#VGA Console -default CONFIG_CONSOLE_VGA=1 -default CONFIG_PCI_ROM_RUN=1 +default CONFIG_CONSOLE_VGA=0 +default CONFIG_PCI_ROM_RUN=0
#default CONFIG_USBDEBUG_DIRECT=1