It doesn't seem good that the Multiboot table gets written before the UMA and high table areas are added. I would think that's why they don't show up.
Yes, that was it, thanks for the advice.
I'm glad it helped.
I checked with coreinfo, and multiboot table did not have a clue about high tables area or UMA. Furthermore, it looked very much like the e820 table Linux was receiving.
Reading the source of multiboot table writer in Coreboot, it says in the comments that adding reserved memory areas is not yet implemented.
Then I set out to implement that. I figured that the easiest way to get the memory areas is to copy them from coreboot table. The problem in this approach was that multiboot table is written to memory before coreboot table is constructed, so there is nothing to copy.
To get around this, I changed the writing order so that coreboot table is written to memory first, and then multiboot table is copied from that. I hope this does not break any specification.
In any case, this resulted in a working BIOS e820 memory map for Linux, which can now be booted from Grub2.
I hope I could soon contribute a patch for this mainboard to the Coreboot project, but first I have to clean the code I have mangled back and forth.
I'd suggest a separate patch for the multiboot tables fix. I'm looking forward to seeing how you fixed it.
Thanks, Myles