Re: [PATCH] serial: 8250 check iir rdi in interrupt

2012-10-30 Thread Alan Cox
On Fri, 26 Oct 2012 14:57:31 -0700 Min Zhang wrote: > On Fri, Oct 26, 2012 at 7:19 AM, Alan Cox wrote: > > > So we only need to check this in serial8250_handle_irq when IIR indicates > > a data timeout interrupt ? > > > > Can we do > > > > if ((iir & 0x0F) == 0x0C) { > >

Re: [PATCH] serial: 8250 check iir rdi in interrupt

2012-10-26 Thread Min Zhang
On Fri, Oct 26, 2012 at 7:19 AM, Alan Cox wrote: > So we only need to check this in serial8250_handle_irq when IIR indicates > a data timeout interrupt ? > > Can we do > > if ((iir & 0x0F) == 0x0C) { > /* Expensive RDI check */ > } > > > > Alan Checking data timeo

Re: [PATCH] serial: 8250 check iir rdi in interrupt

2012-10-26 Thread Alan Cox
> It is racing. For "too much work for irq", here is sequence events > analyzed by a Motorola engineer: Thanks - this is enormously helpful in understanding the report. > 5) The LSR indicates that the transmitter needs data, > but also indicates the presence of data in the FIFO (0x61 in t

Re: [PATCH] serial: 8250 check iir rdi in interrupt

2012-10-23 Thread Min Zhang
On Tue, Oct 23, 2012 at 3:01 AM, Alan Cox wrote: > > > Added module parameter skip_rdi_check to opt out this workaround. > > NAK. Anything like this should be runtime. One can echo 1 (or 0) > /sys/modules/8250/parameters/skip_rdi_check during run time to turn it off (or on) dynamically. Does it c

Re: [PATCH] serial: 8250 check iir rdi in interrupt

2012-10-23 Thread Alan Cox
> Added module parameter skip_rdi_check to opt out this workaround. NAK. Anything like this should be runtime. > Tested on Radisys ATCA 46XX which uses FPGA 16550-compatible and > other generic 16550 UART. It takes from an hour to days to reproduce by > pumping inputs to serial console continousl

[PATCH] serial: 8250 check iir rdi in interrupt

2012-10-22 Thread Min Zhang
The patch works around two UART interrupt bugs when the serial console is flooded with inputs: 1. syslog shows "serial8250: too much works for irq" 2. serial console stops responding to key stroke serial8250_handle_irq() checks UART_IIR_RDI before reading receive fifo and clears bogus interrupt