Re: [BUG][2.6.8.1] serial driver hangs SMP kernel, but not the UP kernel

Paul Fulghum
2005-01-07T14:09:25Z

Alan Cox wrote:
> On Gwe, 2005-01-07 at 00:43, Paul Fulghum wrote:
>
>>IIRC that guarantees a deadlock on SMP due to the
>>generic serial layer trying to grab a spinlock
>>that is already held. (Which prompted the original
>>bug report by Tim several months ago)
>
>
> I fixed the tty locking issues with that. If there are any left they
> should be solely in the serial generic code and I've no idea there

Yes, that is where the locking problems were.
When I last looked at it the problem call path was:

serial8250_interrupt();
spin_lock(port->lock);
serial8250_handle_port();
receive_chars();
flip.work.func(); /* if FLIP buffer full or low_latency set */
ldisc->receive_buf(); /* N_TTY */
tty->driver->flush_chars();
uart_start();
spin_lock(port->lock); *BANG*

--
Paul Fulghum
Microgate Systems, Ltd