[PATCH 2/2] serial: 8250: 8250_omap.c: Clear DMA RX running status only after DMA termination is done

Moteen Shah posted 2 patches 4 weeks ago
[PATCH 2/2] serial: 8250: 8250_omap.c: Clear DMA RX running status only after DMA termination is done
Posted by Moteen Shah 4 weeks ago
Clear rx_running flag only after DMA teardown polling completes. In the
previous implementation the flag was being cleared while hardware teardown
was still in progress, creating a mismatch between software state
(flag = 0, "ready") and hardware state (still terminating).

Signed-off-by: Moteen Shah <m-shah@ti.com>
---
 drivers/tty/serial/8250/8250_omap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c
index e26bae0a6488..272bc07c9a6b 100644
--- a/drivers/tty/serial/8250/8250_omap.c
+++ b/drivers/tty/serial/8250/8250_omap.c
@@ -931,7 +931,6 @@ static void __dma_rx_do_complete(struct uart_8250_port *p)
 		goto out;
 
 	cookie = dma->rx_cookie;
-	dma->rx_running = 0;
 
 	/* Re-enable RX FIFO interrupt now that transfer is complete */
 	if (priv->habit & UART_HAS_RHR_IT_DIS) {
@@ -965,6 +964,7 @@ static void __dma_rx_do_complete(struct uart_8250_port *p)
 		goto out;
 	ret = tty_insert_flip_string(tty_port, dma->rx_buf, count);
 
+	dma->rx_running = 0;
 	p->port.icount.rx += ret;
 	p->port.icount.buf_overrun += count - ret;
 out:
-- 
2.34.1
Re: [PATCH 2/2] serial: 8250: 8250_omap.c: Clear DMA RX running status only after DMA termination is done
Posted by Kumar, Udit 2 weeks, 6 days ago
Please check subject

git log drivers/tty/serial/8250/8250_omap.c

serial: 8250_omap: ....

On 1/12/2026 1:48 PM, Moteen Shah wrote:
> Clear rx_running flag only after DMA teardown polling completes. In the
> previous implementation the flag was being cleared while hardware teardown
hardware to DMA please,
> was still in progress, creating a mismatch between software state
> (flag = 0, "ready") and hardware state (still terminating).
>
> Signed-off-by: Moteen Shah <m-shah@ti.com>
> ---
>   drivers/tty/serial/8250/8250_omap.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c
> index e26bae0a6488..272bc07c9a6b 100644
> --- a/drivers/tty/serial/8250/8250_omap.c
> +++ b/drivers/tty/serial/8250/8250_omap.c
> @@ -931,7 +931,6 @@ static void __dma_rx_do_complete(struct uart_8250_port *p)
>   		goto out;
>   
>   	cookie = dma->rx_cookie;
> -	dma->rx_running = 0;
>   
>   	/* Re-enable RX FIFO interrupt now that transfer is complete */
>   	if (priv->habit & UART_HAS_RHR_IT_DIS) {
> @@ -965,6 +964,7 @@ static void __dma_rx_do_complete(struct uart_8250_port *p)
>   		goto out;
>   	ret = tty_insert_flip_string(tty_port, dma->rx_buf, count);
>   
> +	dma->rx_running = 0;
>   	p->port.icount.rx += ret;
>   	p->port.icount.buf_overrun += count - ret;
>   out: