I had similar problems recently. I did a patch for Asus M4A785-M, which is derived from the AMD Tilapia port.
The patch can be found at http://www.coreboot.org/pipermail/coreboot/2010-August/059989.html
It would be a lot easier to review if you split the patch into smaller pieces.
1. Use svn cp to copy the tilapia board directory for your board 2. Make the changes so it works for your board (just copy the files you already have from another location) 3. svn diff
This will produce a patch with only your changes.
Split out work-around patches as well. Something is broken for your board, and that needs to be fixed, but I don't think we should change the PCI scan code.
There is another patch that sets up UMA and coreboot/ACPI/etc. tables as reserved areas in the multiboot tables. Without this patch booting with Grub to Linux suffers from the same problem of overwriting tables.
http://www.coreboot.org/pipermail/coreboot/2010-August/060014.html
I do not know if these are going to be integrated to the Coreboot trunk, but currently they are available as patch files.
To be committed, patches need to be Signed-off and Acked. If you've tested the multiboot patch and it works for you, you could send an Acked-by: to the list, and it will most likely get committed. If you still have other changes that you'd like to make, then submit another version of the patch with your Signed-off-by: tag.
How does SeaBIOS detect which RAM is usable and which is not? Maybe the memory conflict with UMA and ACPI tables could be avoided in a similar manner?
SeaBIOS reads the Coreboot tables.
Thanks, Myles