Re: [patch] serial: fix UART_BUG_TXEN test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 05, 2006 at 12:23:11PM +0200, Gerd Hoffmann wrote:
> There is a bug in the UART_BUG_TXEN test: It gives false positives in
> case the UART_IER_THRI bit is set.  Fixed by explicitly clearing the
> UART_IER register first.
> 
> It may trigger with an active serial console as serial console writes
> set the UART_IER_THRI bit.

Actually, I think Alan's (f91a3715db2bb44fcf08cec642e68f919b70f7f4)
idea of setting UART_IER_THRI after serial console writes is buggy.
If the serial port being used as a console is sharing its interrupt
line with other devices, then there's the very real possibility for
causing spurious interrupts.

I think that's what needs to be fixed rather than working around this
potentially buggy behaviour.

Maybe we have no option but to take the spinlock in the serial console
code, and suck it if we oops with that spinlock held.

> Signed-off-by: Gerd Hoffmann <[email protected]>
> --- linux-2.6.16/drivers/serial/8250.c.serial	2006-04-05 12:04:31.000000000 +0200
> +++ linux-2.6.16/drivers/serial/8250.c	2006-04-05 12:04:49.000000000 +0200
> @@ -1712,6 +1712,7 @@
>  	 * Do a quick test to see if we receive an
>  	 * interrupt when we enable the TX irq.
>  	 */
> +	serial_outp(up, UART_IER, 0);
>  	serial_outp(up, UART_IER, UART_IER_THRI);
>  	lsr = serial_in(up, UART_LSR);
>  	iir = serial_in(up, UART_IIR);


-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux