[coreboot] SeaBIOS debug output

Kevin O'Connor kevin at koconnor.net
Thu Jul 10 03:40:54 CEST 2008


Hi,

On Wed, Jul 09, 2008 at 11:43:57AM -0600, Myles Watson wrote:
> On Tue, Jul 8, 2008 at 7:41 PM, Kevin O'Connor <kevin at koconnor.net> wrote:
> > Did you have coreboot init the vga option rom first?  If so, you
> > probably want to disable that.
> 
> That lets me get farther, which begs the question why it's not
> reentrant.  Does your code register your handlers over the existing
> ones?  Should it?

SeaBIOS has to initialize the 8086 real mode irq vectors on startup.
It does overwrite the 0x10 handler that the vga bios may have
installed.  I don't see anyway around this - the contents of the irq
table could be junk and not initializing it would lead to mysterious
crashes.

Also, I don't think we can rely on an emulator to setup the memory
associated with option roms.  It's fine for initializing the hardware,
but its another thing to rely on an emulator to initialize the
software interfaces.

So, we need to have SeaBIOS do the option rom scan.

> I'm concerned that in a payload chooser you'll want to have graphical
> output to allow the user to choose SeaBIOS.  If you can't run the VGA
> BIOS first ... that seems like a problem.

This was something that Stefan brought up.  He suggested having
SeaBIOS return to coreboot and then let coreboot select the payload.
However, I'm not convinced that this is the best way to go.  Making
sure that SeaBIOS and coreboot don't stomp on each other could be
difficult.

Another possibility is to teach SeaBIOS how to launch payloads from
flash.

> Now I can boot the Linux CDs and here's the trace from XP.  It gets to
> the "Setup is inspecting your computer's hardware configuration..."
> and hangs.  I was surprised at the "sendmouse: keyboard input buffer
> full" message, because I didn't press any keys.

Okay - the message "sendmouse: keyboard input buffer full" is a PANIC
call - so the bios itself shuts down the machine at that point.

I haven't seen this error.  There are a couple of things I can think
of:

* the ps2 port isn't initialized.  On seabios, I've stopped calling
  the low level keyboard init when used with coreboot (see
  keyboard_init() in kbd.c).  You could try enabling that.

* there is some kind of a run-away interrupt on your hardware.  The
  keyboard is on int 1 and the mouse is on int 12.  Those aren't
  normally used by other devices so this seems less likely.

* The mouse code may not be that flexible.  You could try disabling
  CONFIG_PS2_MOUSE and see if that helps.

* You might want to double check that you don't have the keyboard and
  mouse swapped in the ps2 ports.  You might want to also try booting
  without the mouse plugged in.

I have noticed that the mouse and keyboard code are both writing to
the same ps2 io ports and that they aren't necessarily safe wrt to
mouse and keyboard interrupts.  This is a problem inherited from the
bochs code.  I plan to look at this, but it's not going to be a quick
fix.

Thanks,
-Kevin




More information about the coreboot mailing list