[coreboot] GSoC project(SCSI boot)__status report

Joseph Smith joe at settoplinux.org
Thu Jun 19 18:35:09 CEST 2008

On Thu, 19 Jun 2008 16:24:10 +0800, "Zhang Rui" <zrfail at gmail.com> wrote:
> 2008/6/19 Joseph Smith <joe at settoplinux.org>:
>> Well,
>> Sorry to say, to me that does not make very much sense.
>> First of all, at the point where you "1. copy LegacyBIOS codes to
> 0xf0000"
>> the memory should already be initialized by coreboot correct?? This is
> one
>> of the first things coreboot does is initialize the memory. So, the
> second
>> part of number 2. ("initialize the memory") may not be necessary if the
>> memory is already initialized by coreboot.
> Sorry for being unclear. According to Kevin, some LegacyBIOS interrupt
> handlers need the Bios Data Area (BDA) and Extended Bios Data Area
> (EBDA) setted by the post() function in LegacyBIOS.  So my meaning of
> 2. ("initialize the memory") is use modified post() to set up these
> areas.
> Here is some piece of Kevin's email, and I forword the full text at
> the end of this email.
>>> >> What we have to find out is: Do we have to preserve much at all?
> Maybe
>>> >> it is enough to install legacybios to 0xf0000 and let it live there,
>>> >> then the payloads could just use intXX calls, as they can with an
>>> >> AMI/Phoenix/Award bios installed. But maybe it is not that trivial.
>> As above, some of the interrupt handlers may run okay without "post"
>> running.  However, several of them want to access the Bios Data Area
>> (BDA) and Extended Bios Data Area (EBDA).  Basically, these are the
>> working storage areas of the bios.  The "post" code is what
>> initializes these memory areas.
>> Here is what I would suggest, I don't know if it is the right direction,
> but
>> I think it logically makes sense:
>> 1. Start the coreboot initialization process as normal
>> 2. When coreboot gets to the memory allocation part; have it reserve a
>> certain amount(Size of LegacyBIOS??) at 0xf0000 (if option LegacyBIOS is
>> selected).
> this should be taken to consideration.
>> 3. (if option LegacyBIOS is selected) copy LegacyBIOS codes to 0xf0000.
>> 4. (if option LegacyBIOS is selected) Jump to LegacyBIOS and setup any
>> tables, INT's, etc.
> According to Kevin's email, this will be done by calling post() in
> LegacyBIOS. But post() will do the booting at the end, so we should
> modify it to return to coreboot.
>> 5. Return to coreboot and continue as normal.
>> 6. in the payload part initialize the SCSI controller and install a
> handler
>> and call LegacyBIOS INT19.
>> Does this make any sense, or am I way off course???
> Thanks to Joseph. You give a more detailed roadmap and I will try to
> go on this direction.
> And any questions?
I don't think so, I am excited to try it out once you are finished.
Although I am using IDE instead of SCSI.
Sorry if I sound like a broken record, the main thing to remember is we
need to make all the LegacyBIOS code that is getting injected into the
coreboot base code optional, hence the "if option LegacyBIOS is selected".
There are alot of people sensative about this, and we need to keep coreboot
flexible and make everyone happy, right?

Joseph Smith

More information about the coreboot mailing list