[coreboot] [RFC] consoles, serial ports and all that for v2 and v3 payloads

Patrick Georgi patrick at georgi-clan.de
Thu Jan 24 21:36:51 CET 2008


Hi,

as promised a short proposal on how to give the payload a chance to make
use of the console(s) established by coreboot.

There's an ACK for my serial patch, but I'll wait for responses on this
one, as the patch is a first step for this strategy.

The proposal is about a setup which would implement both console
management (Torsten wrote about int0x10) and resource tables (eg. serial
ports at 0x400) for crucial devices.
This way a payload could have a console on COM1 and get its data via PPP
or ZMODEM on COM2. With only a console setup, it wouldn't know about
COM2, with only a serial ports table, it wouldn't know where to find the
user...


The proposal is layered in two types of records:

The first type is an I/O-device record, like the serial port record I
wrote. These can be extended with additional information as neccessary
(and independent from other device types!), which might include IRQs or
enumeration (in case we ever support more than one serial port in cb
itself, for example).

These record are specified and designed on an as-needed basis, so we
don't fall in the trap of over-engineering.
Multiple devices are specified with one record (of the same type) per
device, with some identifier (int) to tell them apart (added when we
first use this strategy).

By only adding data to the record's end, they're implicitely backward
compatible, as the growing size is taken care of with the size attribute
that is standard to all records.
Payloads can figure out which information exists based on size as well,
by ignoring any field that exceeds the size.


The second type is a console type. It consists of tag and size (like
every record), and an integer (enum) type that specifies the device type
(eg. serial=0, vga=1, ...).
Later, this record can be extended to also carry a device number (if
there are multiple serial ports) and maybe priorities or markers that
consoles should be used in parallel (serial + vgatext).
Multiple consoles would again be done by adding one record for each
console.
Again, these additions will be made when there's an actual use case,
thereby reducing the problem space right now.



I'd like to go on with that, and will do so in a few days. Please don't
wait until I have a patch ready for all that stuff, before telling me
it's crap ;-)


So... Comments? :-)

Regards,
Patrick Georgi





More information about the coreboot mailing list