SCC UART stalling/hanging - progress

Dan Malek dan at embeddededge.com
Fri Oct 22 00:28:15 EST 2004


On Oct 21, 2004, at 1:06 AM, Richard Williams wrote:

> I think there is a bug in the driver where the interrupt is being 
> cleared in the wrong place. My final solution was to move the clearing 
> of events to be before receive_chars().

There is a race condition that this could fix.

> This way any new rx interrupts that occur while transmit_chars() is 
> executing will not get lost.

The race condition is actually that both receive and transmit 
processing will
loop on the BDs until it finds an empty one.  Between finding that 
first empty
BD and clearing the interrupts another interrupt could arrive.

I'll see that this gets propagated into the sources.

Since this didn't help Jeff, I have to ask, are you doing any kind
of flow control?  Either hardware or software?

Thanks.


	-- Dan




More information about the Linuxppc-dev mailing list