[coreboot] Coreboot support for ASUS M5 A99X EVO ?

Bernhard Urban lewurm at gmail.com
Wed Feb 22 12:51:38 CET 2012


so finally, I spent some time on porting coreboot to the asus board
"m5a99x evo". http://www.asus.com/Motherboards/AMD_AM3Plus/M5A99X_EVO/
I was equipped with three DIP chips and decided to use my target
machine also for developing. I had also set up a quite complicated
configuration for serial debugging, as I didn't own a second machine
with a rs232 board. Although the first try (just flash the "m5a88-v"
configuration) showed some output :-) ( http://tinyurl.com/89a33m5 ),
the build cycle was a pain in the ass.
(0) building coreboot (takes some seconds...)
(1) flashing the chip (~30seconds, without verifying)
(2) reboot (~20sec)
(3) starting coreboot and analyse the output (between 1sec and some minutes ;-))
(4) switch chip with vendor bios on it (some seconds)
(5) booting vendor bios and linux (35sec + 11sec. yes, the vendor
firmware takes three times longer than linux + x11. BOAR ;-))
(6) switch chip again.

So I was looking for alternatives. I remembered the ft2232 stuff by
Uwe. I had it anyway on my "order it some day"-list, so it was the
right time ;-)
In the meanwhile, I refit my old machine with a new hdd and a
reasoneable graphic card. Luckily, it has also a serial port :-)
I was a bit afraid of building a programmer (the ft2232 thingy) as I'm
not really the hardware guy. However, the first dump was successful.
Writing was working too. I was impressed :-) Thanks to Uwe at this

So the build cycle is more convenient now:
(0) building coreboot (takes longer than on my new machine, but it's okay ;-))
(1) flash the chip with the ft2232 thingy (~30 seconds, without verifying)
(2) put the chip onto the mainboard
(3) start machine and watch serial output

all in all, it take like one minute to test one build. nice!

So, now I was able to do some serious coreboot hacking. I started from
the "m5a88-v" port. What I did:
- Changed the southbridge from "SB800" to "SB900"
- Adapted some compile-breaks due to this change.
- hardcoded some pci device instead of locating it @ early.c -> ohai
ramstage :-)
- again, some pci related change/hack (aborting the enumeration
earlier). I didn't really understand what I did here, I just figured
out it hangs here (could be related with the quirk below). After that

I was very happy ;) However, SeaBIOS itself hang somewhere.
In the meanwhile, Kerry pushed RD890 patches, which seemed to be more
appropriate for my board (i used RS780 code so far, hence the ugly
hacks mentioned above I guess). So I used them, and it felt much
cleaner immediately. The payload was still loading -> nice.

After that, I investigated a bit what the problem is with SeaBIOS. At
this moment, it hanged after printing "Relocating init from 0x000e8450
to 0xcffd57a0 (size 42812)" (see http://tinyurl.com/78evzex ). I
looked into the SeaBIOS code and found out, that you can disable
relocation. So I did.

The result was a bit more confusing. http://tinyurl.com/7uh8xty
The output get distorted (which seems not to be deterministically,
http://tinyurl.com/6opakzl ) and something issues a soft reset (but
not everytime...). Eventually I gave up at this point (had to do other
stuff anyway). I guess it is something wrong with RAM initialization
as relocation in higher memory regions doesn't work. Also, the graphic
card isn't found on the pci bus as the RD890 code inlcudes a quirk
which "disable all pcie bridges" aka
`sr56x0_rd890_disable_pcie_bridge()'. According to `lspci' (with
vendor bios), the graphic card is on bus 1, so this seem reasonably.
@Kerry: is there some way to enable it again after "early"?

my WIP branch is available here (please tell me if you pull from it,
because atm I'm rebasing stuff on it and using `git push -f' to
overwrite it...):

full logs (including config and rom images) are available here:

Some questions:
- What does "CIMX" stands for? I grep'd my #coreboot logs for it. One
guy asked that already, but he didn't get an answer :-/
- What's the best/easiest way to verify if RAM init was successful?
- I think it would be nice to have an entry on the wiki page for this
board. How I get an account? Stefan? :-)

I appreciate any comment, I know resources are short :-(
anyways, it was fun and exciting so far :-) thanks!


On Wed, Nov 23, 2011 at 10:29 PM, Bernhard Urban <lewurm at gmail.com> wrote:
> Hi Chris,
> I reported flashrom compatibility here:
> http://www.flashrom.org/pipermail/flashrom/2011-October/008152.html
> Regarding coreboot support: I'll try to port coreboot to this board. I
> already have two additional flashchips and at the moment I'm waiting
> for a serial port connector. I don't know how long it'll talke to port
> it, but don't except anything useful in less than three months, since
> I'm new to coreboot (and lazy :-))
> Bernhard
> On Sat, Nov 19, 2011 at 6:33 PM, Christopher Huang-Leaver
> <zeonglow at googlemail.com> wrote:
>> Hello,
>> I noticed earlier versions of this board are fully supported, but not this
>> one.
>> I have attached the output of,  lspci,  flashrom and dmidecode, if that is
>> any use to anyone.
>> The spec sheet is easy to find by typing ASUS M5 A99X into Google.  The
>> board does have a neat feature of being able to flash the BIOS from within
>> the BIOS menu, which I have already used to update it.
>> Many thanks
>> Chris

More information about the coreboot mailing list