FreeBSD on GA-E7AUM-DS2H with Over 2GB of RAM

Written by Tatyana Hiko < tatyana at miko dot org >

=ChangeLog=
Initial Release (Dec 1, 2009)

Japanese version

Abstract

Gigabyte technology's MPC7A Motherboard GA-E7AUM-DS2H has a bug in its BIOS. (This bug still exists in the latest BIOS, version F4)

Due to this problem this motherboard cannot drive FreeBSD stably if

You can avoid this problem by

though, here I tried to find some software workaround.

What is wrong?

This BIOS returns an incorrect SMAP information which has an overlap area during a free area (100000:bfdf0000) and the frame buffer (70000000:10000000).

BASELENGTHTYPE
09e8001
9e8008002
f0000100002
100000bfdf00001
70000000100000002
800000003fef00001
bfef000030004
bfef3000d0003
ea00000020000002
fec0000014000002
100000000400000001

* bfdf0000 should be 6ff00000

So, we can fix this issue by patching the FreeBSD boot loader to convert the incorrect SMAP information into a correct one which hasn't any overlapping area.

How to patch and rebuild the boot loader

To patch and rebuild the FreeBSD boot loader, first of all, you have to decrease the RAM to 2GB because you have to make FreeBSD work properly. After that you can patch the source tree like the following.

$ mkdir ~/Sources
$ cd ~/Sources
$ wget http://miko.org/~tatyana/tech/FreeBSD/FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff
$ openssl rmd160 FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff
RIPEMD160(FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff)= 522615669719b4cac3a0f6a838fefdc00a93bcdb
$ cd /usr/src
$ sudo patch -p0 < ~/Sources/FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff

After the patching, try to build and install the boot loader.

$ cd /usr/src/sys/boot
$ sudo make clean
$ sudo make obj
$ sudo make depend
$ sudo make
$ cd i386/loader
$ sudo make install
$ cd ../..
$ sudo make clean

That's it! ;-)

Thanks

Thanks to adidasprince's Chameleon patch.


return