Re: Bug in X86 serial port driver in CE.NET 4.2 ?

From: Jason (jhoy_at_nospam.nspace.com)
Date: 09/02/04


Date: Wed, 1 Sep 2004 18:09:55 -0600

Hello Steve,

Yeah I have noticed that too on some UARTs. The chipset I am dealing with
now is VIA82C686B bolted to a Pentium III. This board is an 'off-the-shelf'
board from Aaeon. From the behaviour I am seeing with my driver it seems to
be a software issue. The edge triggered issue has bit me enough I caught
that for the UART (unmask/mask sequence at end of IST).

The problem has occured at different baud rates and can happen at very low
data rates. It was one of those 'random' lock-ups of our box. I have not
been able to tie the data rate to the hang, it can happen in 5 min. or 2
hours at any data rate.

The application never reads 1 byte at a time but does depend on the hardware
connected up (system configurable to control different pieces of hardware).
No flow control (hardware or software), standard N,8,1 no weird stuff with
DTR, etc. Its basically the most boring serial port application you can
think of :)

I did notice in the CE source some little 'weird' stuff but I didn't get
into it enough to know if it was wrong. For example, the 16550 FIFO
transmit interrupt happens just when there is 'room' in the FIFO, not when
it is empty, the code in the kernel seemed to assume a 'transmit shift
register empty' was the same as 'FIFO empty' but that should just cause lost
data, not a hang.

I cannot think of any other details that might matter at this point, as
usual when debugging this kind of problem you develop all sorts of
'possibly's but nothing solid. The two known issues so far is no hang with
no serial ports and no hang with my driver. This is a monolithic driver so
I bypassed an external ISR, etc.

If I think of anything else I will post it.

Thanks,
Jason