[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

> >  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.


More information about the coreboot mailing list