SMP issues on ARM11 MPCore

George G. Davis gdavis at mvista.com
Fri Jan 8 12:44:44 EST 2010


Hello Mac Lin,

On Tue, Jan 05, 2010 at 04:02:22PM +0000, mkl lin wrote:
> 
> 
> > These two sounds like a problem with interrupts - userspace console IO
> > is interrupt driven, whereas kernel console IO is not.
> 
> Thanks for Russell's
> advice, after some tracing, I found that my IER (Interrupt Enable
> Register) of the serial port is 0 under case 1!!
> 
> Case 2 is
> actually the same with case 1. Case 1 would come first, if I don't keep
> input things and let it finish its slow printing, it would then become
> case 2.
> 
> UART_BUG_THRE are detected and enabled on my platform, causing serial8250_backup_timeout to be used.
> 
> There
> are many places that do ( get IER, clear IER, restore IER ), like
> serial8250_console_write called by printk, and
> serial8250_backup_timeout. serial8250_backup_timeout is not protected
> by spinlock, causing the race condition, and result in wrong IER value.
> 
> Following patch fix this issue. Case 3 and Case 4 are still often seen, but not case 1 and case 2.
> 
> Best Regards,
> Mac Lin
> diff --git a/kernels/linux-2.6.31.1-X/drivers/serial/8250.c b/kernels/linux-2.6.31.1-X/drivers/serial/8250.c
> index 288a0e4..55602c3 100644
> --- a/kernels/linux-2.6.31.1-cavm1/drivers/serial/8250.c
> +++ b/kernels/linux-2.6.31.1-cavm1/drivers/serial/8250.c
> @@ -1752,6 +1758,8 @@ static void serial8250_backup_timeout(unsigned long data)

If you still need resolution on the serial8250_backup_timeout problem,
you should probably consider submitting an RFC/PATCH to the
linux-serial at vger.kernel.org or  linux-kernel at vger.kernel.org.

--
Regards,
George



More information about the linux-arm-kernel mailing list