[LinuxBIOS] serial debug messages workaround

Doug Bell dbell at nxtv.com
Wed Sep 7 20:59:04 CEST 2005


We're working on bringing up linuxbios on the epia-sp. We found the
serial
output is locking up strangely in a busy wait within src/pc80/serial.c:

static void uart_tx_byte(unsigned char data)
{
        uart_wait_to_tx_byte(); // this one causes trouble
        outb(data, TTYS0_BASE + UART_TBR);
        /* Make certain the data clears the fifos */
        uart_wait_until_sent();
}

If the uart_wait_to_tx_byte() call is removed, there is no lockup on
serial output.

The lockup on serial output always occurs in the same place, based on
whatever would be printed. It's not random at all across reboots,
however
it is fairly random as regards code changes. That is, if you have a loop
that prints stuff out, then try to print out some other stuff, somewhere
along the line it will lock up during printing. Where it locks up is
always the same place in the serial output stream, provided the code
remains
unchainged.

The uart is inside the VT1211 superio device. Does anyone have any clue
as to why this is locking up.

As a workaround we've just commented out the uart_wait_to_tx_byte() for
now, but that's nonstandard and might break other things. We are not yet
checking in any code. 

Thanks for any advice/ideas.





More information about the coreboot mailing list