[coreboot] legacy bios support and coreboot
Kevin O'Connor
kevin at koconnor.net
Thu May 8 02:25:32 CEST 2008
Hi Aaron,
On Wed, May 07, 2008 at 10:50:11AM +0800, aaron lwe wrote:
> > The option rom scan and execution allows the bios code to call out to
> > additional system roms. The "post" stage runs in 32bit mode, but the
> > option roms are called in 16bit mode - the "legacybios" code simply
> > transitions to/from 16bit mode to make these calls. The option rom
> > code is executed natively on the processor.
>
> I think this is redundant with coreboot, since coreboot will also run
> pci rom, eg. vga bios.
I think coreboot only runs the vga bios and only in a simulator. I
think it would be difficult to run some option roms (eg, scsi) from
within an emulator. That said, I think it would be great to configure
which roms got run, which got emulated, and which got skipped
entirely.
[...]
> > Some of the hardware accesses made by the "legacybios" code appear to
> > be specific to hardware in the emulator. The code attempts to enable
> > ram shadowing of the memory segment at 0xf00000 - it does this so that
> > it can put acpi/mptable/smbios tables into that area. After it is
> > complete, it attempts to disable writes to that region. The code
> > sequence looks to be specific to intel north/southbridges. It isn't
> > necessary to disable writes to 0xf0000 (though it would be nice), but
> > it is necessary to have the ability to alter that memory.
>
> This shadowing job should be left to coreboot, if someone is going to
> use legacybios, he should take care of this shadowing job in ram init
> code.
That's fine, but it means the launched OS will be able to overwrite
the 0xf0000 segment. It would be nice to write protect it, but it is
not a huge issue.
> I've written a loader for coreboot-v2 to load legacybios, it works
> well when used with qemu, I've booted freebsd with it. But on real
> hardware, via epia-cn, it hangs with a blank screen, the debug port
> value is 0x31, I'll take some time to see what's going wrong.
Changing the legacybios code to forward debug output to a serial port
will definitely help here.
> I add a header for legacybios to become a payload, this is done by a
> utility createpayload.
> I've attached the loader and the utility.
> Signed-off-by: Aaron Lwe <aaron.lwe at gmail.com>
Thanks - I'll take a look.
-Kevin
More information about the coreboot
mailing list