[coreboot] passing EFI-console-like info to payloads

Jordan Crouse jordan.crouse at amd.com
Mon Apr 7 22:31:38 CEST 2008

On 07/04/08 15:37 -0400, Jeremy Jackson wrote:
> I've been eyeing legacy ISA io/mem range removal, in particular VGA, for
> some time.  Concerning early debug output, it seems that EFI has done
> this by exporting basic framebuffer info, and Linux has an efifb which
> uses it. (framebuffer base address + size, stride, pixel format)

EFI does this by first bringing up the video hardware (in other words,
adding a full video module for the hardware into the EFI system), or 
by acting as a proxy for VGA (i.e - bringing up the video console with
VESA) and then passing the information to the kernel.

> Linuxbios currently passes serial console info.  Idea:  pass key
> framebuffer info to payloads, so they can use a video/VGA console for
> early debug output (Linux "earlyprintk").

To emulate this behavior, coreboot would have to understand how to drive
a myriad of video controllers itself.  And it still wouldn't help with what
you want to do because earlyprintk comes and goes before the kernel
framebuffers are initialized.   You are far better off using the native
framebuffer driver for your hardware (because then you can change modes
and do other things that efifb cannot).

> There is a thread "[coreboot] libpayload: Geode video console support"
> from a few days ago, which I think is related.

That is not at all related - that is a patch for a payload library that
emulates video output for the local payload but nothing else.  That code
does not live in coreboot.

> With the libpayload video console support framework, presumably all gfx
> chips could have their drivers written, yet again.  There's a headstart
> in Linuxbios for initializing RageXL and a couple others, that could be
> enhanced to print output also.
> Is this necessary, or unnecessary code duplication?  Could the
> chip-specific init code be left in Linuxbios, and only a generic video
> console (ie font + generic rendering to framebuffer code) be provided in
> libpayload (and/or Linux)?

As far as I am concerned, coreboot should have nothing to do with 
graphics - initializing graphics is up to the individual payloads.  If it
is the kernel, then it should be a framebuffer.  if it is something else
(say, a libpayload based payload) then that "something else" needs to
handle it.  Yeah, this isn't at all like how a traditional BIOS does it,
but we're not designing coreboot to be a drop-in replacement for a traditional

Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.

More information about the coreboot mailing list