• Vignesh R's avatar
    serial: 8250: Don't service RX FIFO if interrupts are disabled · 2e9fe539
    Vignesh R authored
    Currently, data in RX FIFO is read based on UART_LSR register state even
    if RDI and RLSI interrupts are disabled in UART_IER register.
    This is because when IRQ handler is called due to TX FIFO empty event,
    RX FIFO is serviced based on UART_LSR register status instead of
    UART_IIR status. This defeats the purpose of disabling UART RX
    FIFO interrupts during throttling(see, omap_8250_throttle()) as IRQ
    handler continues to drain UART RX FIFO resulting in overflow of buffer
    at tty layer.
    Fix this by making sure that driver drains UART RX FIFO only when
    UART_IIR_RDI is set along with UART_LSR_BI or UART_LSR_DR bits.
    Signed-off-by: default avatarVignesh R <vigneshr@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2e9fe539
8250_port.c 81.8 KB