Hi all.
I experimented with K10+ CPUs and boards that doesn't support them, and
on some boards it's possible to start new CPUs with BIOS from board on
same (or closely relative, like GeForce7025/NForce520 pair) chipset -
possible with some bugs, possible without all working fuctions, or even
sysnem that hangs on late BIOS initialisation stages - but CPU is
successfully initialized. Also there are many enough old AM2 boards,
that have AM2+/AM3 CPU support. So incompatibility of new CPUs with old
hardware is only on software level (or 'semi-hardware' - when there
aren't enough place in flash to fit new K10-related modules and microcodes).
I looked to coreboot because it looks like it can be enough functional
replacement of native BIOS. And I want to try to make some experiments
with it.
I have some MBs for experiments (Asus M2V-MX, Biostar GeForce7025, Palit
NForce520 - that is AM2+/AM3 CPU compatible, MSI K9N4 Ultra MS-7310, and
some Biostar on K8T800 - but as I understand this bridge can't be
correctly initialized by coreboot). GeForce7025 and NForce520 boards
have compatible BIOS - at least, after swapping of flashes they can
successfully load MS-DOS from USB flash, and work with PCI/PCI-E
videocards - so it looks that they use reference design. Also I have
Willem programmer (still without PLCC parallel flash adapter because it
was unneeded for me for many years - but I'll make it soon) and POST
card, some knowledge in PC hardware and programming, and sometimes have
some free time that I can spent for such experiments.
After look at code I have some questions:
1) Coreboot image that is assembled for K10, will support K8 CPUs? And
how about K10.5 AthlonII/PhenomII CPUs (generic AM2+ boards can
successfully run AM3 CPUs)?
2) To change CPU family - it's enough to replace family in Kconfig and
replace included files in romstage.c?
3) Why you don't use generic AMD memory routines and CPUID detection for
CPU family at initialization, and possible conditional compiling of code
if somebody will need to disable support of K8 or K10+ - for ex., for
flash space saving?
4) And what I need for try to create bios for unsupported MB if I take
one working as basic? Except modifying Kconfig, replacing DSDT and, of
course, replacing MB model name? How can I obtain data for
devicetree.cb? I must edit irq_tables.c and mptable.c if I try to adapt
BIOS from MB with same chipset? And how about cmos.layout?